Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading Lua-协同程序-官方示例_Multithreading_Lua_Coroutine - Fatal编程技术网

Multithreading Lua-协同程序-官方示例

Multithreading Lua-协同程序-官方示例,multithreading,lua,coroutine,Multithreading,Lua,Coroutine,在这个网站上 有一个协同程序的例子 我在没有协同程序的情况下编写了相同的示例,在官方示例中我看不到协同程序的任何优势。在这个例子中使用协同程序有什么好处吗 没有协同程序也一样(我用math.random替换了io.input) 过滤器中的循环是没有意义的。它只执行过一次。是的,这是正确的,循环中断是因为它返回一个值。我想当我最初读到这个问题时,我假设它是“协同路由的意义是什么”,但再看一遍,我想我可能误读了它。更具体地说,这个例子在某种程度上是否有用(如果没有它们,它也可以写得很好)? loca

在这个网站上 有一个协同程序的例子

我在没有协同程序的情况下编写了相同的示例,在官方示例中我看不到协同程序的任何优势。在这个例子中使用协同程序有什么好处吗

没有协同程序也一样(我用
math.random
替换了
io.input


过滤器中的循环是没有意义的。它只执行过一次。是的,这是正确的,循环中断是因为它返回一个值。我想当我最初读到这个问题时,我假设它是“协同路由的意义是什么”,但再看一遍,我想我可能误读了它。更具体地说,这个例子在某种程度上是否有用(如果没有它们,它也可以写得很好)?
local line = 1

function Produce ()
    local value  = math.random(10)
    return value
end

function Filter ()
    while true do
      local value = Produce()
      value       = string.format("%3d %s", line, value)    
      line        = line + 1
      return value
    end
end

function Consum ()
    while true do
        local value = Filter()
        print(value, "\n")     
    end
end

Consum()