lua的coroutine也就是协程,跟C++中的线程有点像,但他事顺序执行的。
主要需要理解三个函数
coroutine.create()、coroutine.yield()、coroutine.resume()
create函数将创建一个协程,其参数为所执行的函数。
function corfun(x,y)
print("run cor",x,y)
if(x)
local k = coroutine.yield(x)
print("next time resume" ,k)
else
print("end")
return y
end
如 local co = coroutine.create(corfun)
创建完后这个协程是处于挂起状态的,我们需要通过resume函数来唤醒co执行其对应的函数。
如 coroutine.resume(co,10,20)
当执行函数 有额外参数需要传递的时候,要在resume(co, ...) ...中填写。
执行 coroutine.resume后会返回 (true 或false) 和 (函数执行的返回值 或 yield的参数值)
例如上面corfun ,当resume第一次的时候,由于x为10,所以会执行到 coroutine.yield此时函数将会挂起,resume获得的返回值就为true 和 x,注意这里不会是k,
当下一次resume的时候 k会接收resume的参数。
然后会继续运行下去print("next time resume" ,k)这个语句
大体就是这样
写的比较匆忙,睡觉了。。。。。。