Lua学习笔记四——协同程序coroutine

来源:互联网 发布:淘客微信小程序源码 编辑:程序博客网 时间:2024/04/29 04:33

lua中的协同程序类似于多线程,但是与多线程还是有点区别的,区别在于协同程序必须必须合作,且同一时刻只有运行一个协同程序。

 

 

这是一个简单的示例函数,下面看看协同程序的调用

 

在上面的调用代码中,右边附上了打印输出,第一行是创建一个协同程序,第二行查看协同程序的返回值,第三行查看此时协同程序的状态,处于suspended(挂起)状态,第四行执行协同程序,第五行查看此时协同程序状态,处于dead(死亡)状态。

 

协同程序有四种状态,suspended(挂起)、running(运行)、dead(死亡)、normal(正常),

当调用coroutine.create后,处于挂起状态

调用coroutine.resume后,处于运行状态,执行完毕后,处于死亡状态

当一个协同程序a调用另一个协同程序b后,a就处于正常状态,b处于运行状态

 

协同程序传递参数:

 

在resume调用中,除第一个值外,其余值都将传给yield,执行后的返回之中,第一个值为Boolean类型,协同程序运行是否正常,其余的值是对应yield的返回值。

 

 

 

 

原创粉丝点击