8.lua学习笔记:协程
来源:互联网 发布:mac yosemite 下载 编辑:程序博客网 时间:2024/06/05 03:26
1.协程基础:
lua把所有协程相关的函数都放在coroutine的table中,create接受一个函数参数用于创建协程,这个参数就是协程的执行过程,
每个协程有四种状态:suspended(挂起),running(运行),dead(死亡,执行完),normal(正常)
co = coroutine.create( function () print("hello") end)
print( coroutine.status(co) ) ------suspended(刚创建的协程处于挂起状态,不会自动执行)
coroutine.resume(co) ------hello(唤醒后执行打印语句)
print( coroutine.status(co) ) ------dead(执行完了,协程结束)
协程的真正威力在于yield的使用,通过resume和yield的交互,可以在不同的协程间传递数据:
function test( a, b )
res = coroutine.yield( a+b, a - b )
print("res:" .. res)
end
co = coroutine.create(test)
print( coroutine.resume(co , 12, 5) ) ---------true 17 7
print( coroutine.resume(co , 12, 5) ) ---------res: 12 /n true (此处res:12是协程打印的,而True是当前进程打印的)
从上面可以看出,协程每次唤醒后执行到yield,yield语句执行到抛出结果后挂起,等待下次唤醒,下次唤醒,从yield处接收信息开始;
首次resume传入的参数是传给协程住函数的,即test;如果协程函数有return语句,则最后一次resume将会收到协程return的结果。
协程A唤醒协程B,此时,协程A既不是running状态,也不是dead状态,而是normal状态;yield能传出多个结果,也能接收多个值。
0 0
- 8.lua学习笔记:协程
- Lua学习笔记(2): 协程
- Lua学习笔记(1)
- Lua学习笔记一
- Lua学习笔记一
- Lua学习笔记一
- Lua学习笔记一
- Lua学习笔记二
- LUA 学习笔记 01
- LUA 学习笔记 02
- LUA 学习笔记 03
- lua学习笔记
- Lua学习笔记
- LUA学习笔记
- Lua 学习笔记
- lua学习笔记
- Lua学习笔记1
- lua学习笔记
- android开发学习之路(1)---- activity及intent基本详解(2)
- 深入理解CRITICAL_SECTION
- Python学习1
- ch6.jsp内置对象--response对象
- Android 混淆打包标准proguard 配置
- 8.lua学习笔记:协程
- C++友元函数和友元类
- c# 5.0入门经典笔记
- bootstrap 下拉菜单
- Object-C加强 Block使用
- HDU 5135 Little Zu Chongzhi's Triangles(状态压缩dp)
- python3 安装protobuf模块
- Linux常用命令(四十四) - ifconfig
- asp.net读取数据库到文本框,修改再更新到数据库