(1)Lua 协同程序(coroutine)与线程比较类似:拥有独立的堆栈,独立的局部变量,独立的指令指针,同时又与其它协同程序共享全局变量和其它大部分东西。
(2)在任一指定时刻只有一个协同程序在运行,并且这个正在运行的协同程序只有在明确的被主动要求挂起的时候才会被挂起。其它协同程序才有机会执行。
(3)协调程序创建后,默认是挂起的,调用resume()方法后才算启动
--生产者消费者问题
local newProductor
--生产
function productor()
local i = 0
while true do
i = i + 1
send(i) --将生产的物品发给消费者