lua并发机制之--coroutine

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)这个语句

大体就是这样

写的比较匆忙,睡觉了。。。。。。

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值