lua协程的使用列子分析
来源:互联网 发布:淘宝客公众号系统搭建 编辑:程序博客网 时间:2024/06/10 04:19
例子一
handle = coroutine.create(function (arg1,arge2) local start = 0 print(arg1,arg2) while true do if( start == 0 or start == 20) then print("yield arg is :",coroutine.yield(arg .. "me",arg2+1)) print("back to",start) end if start == 30 then break end start = start + 1 print("it is first coroutine istance") end return "coroutine is over"end)print(coroutine.resume(handle,"test",1999))print(coroutine.resume(handle,"ooo",33))print(coroutine.resume(handle,"111",77))print(coroutine.resume(handle,"jjj",55))
输出结果:
分析
第一次调用resume,此时没有对应的yield,它的参数时传递给匿名函数的
第二次调用resume,此时有对应的yield, 此时resume的作用是从函数yield返回,resume的参数正好传递给yield作为返回值(yield的第一个返回值是固定的,返回调用状态true or false)
第一次调用yield,并传递了参数,此时的yield参数是作为:让本次yield调用返回的(匿名函数继续执行,而不是卡在yield函数调用处),resume 调用的返回值。
例子二(生产者,消费者)
function send(x) coroutine.yield(x)endpd_handle = coroutine.create(function () local x = 0 while true do x = io.read() send(x)end)fuction receive() local status,value = coroutine.resume(pd_handle) return valueendfunction consumer() local y = 0 while true do y = receive() print("receive value is :",y) endendconsumer()
0 0
- lua协程的使用列子分析
- JFreeChart的正确使用列子
- 列子分析
- java 的 反射机制的使用列子
- lua 中table的使用和分析
- 使用weblogic jms定时发送的功能列子
- python的wiki 列子.
- 最简单的列子
- 行列互换的列子
- FragmentTabHost的小列子
- 位运算的列子
- Java8 lambda的列子
- JAVA8的简单列子
- 瀑布流列子,数据库 ormlite 列子,PhotoView 列子等,反正是一个完整的app列子
- Lua的协程
- Lua学习---lua源代码的分析顺序
- Jamil的一个小列子
- Addhandler addressof 不错的列子
- Ubuntu 安装 Sublime Text 3
- android手机 - 关于信号强度的问题
- 渲云客户端之单帧多机
- 如何制作HALCON标定靶
- cocos2dx_lua 2.x 版本 与 3.x 版本 区别 总结
- lua协程的使用列子分析
- JavaScript中地理位置API的使用
- iTOP4412开发板去掉底板上的重力加速
- 正则表达式
- Oracle数据完整性学习笔记
- What is Complex Event Processing? (Part 5)
- 聊聊HTTPS与Android安全
- SQL Server 数据库备份和还原认识和总结(一)
- 玩命牛的成长记录(二十三)——文字