coroution协程
定义协程函数,co = coroutine.create(function(a,b) end)
启动协程函数和继续运行,coroutine.resume(co,10,20)
co = coroutine.wrap(function(a,b) end) 另一种创建协程函数方法,可co(10,20)这样启动协程函数
暂停协程函数,coroutine.yield()
继续运行,coroutine.resume(co),可以不传递参数
协程函数返回值
co = coroutine.create(
fucntion(a,b)
print(a+b)
coroutine.yield(a*b,a/b)--有暂停时返回值可放在yield中
print(a-b)
return a*b+1,a/b+1 --可用return返回
end
)
接收协程返回值
res1,res2,res3 = coroutine.resume(co,10,20)--res1表示协程是否启动成功true或false,res2、res3为需要返回的值
res1,res2,res3 = coroutine.resume(co)--暂停后启动的协程接收方法一样
coroutine.running():返回正在跑的 coroutine,一个 coroutine 就是一个线程,当使用running的时候,就是返回一个 corouting 的线程号
coroutine.status():查看 coroutine 的状态注:coroutine 的状态有三种:dead,suspended,running,具体什么时候有这样的状态请参考下面的程序
yield的参数是resume的返回
resume的参数处第一个外是yield的返回(第二次resume及以后)