lua coroutine理解
2016-01-06 09:20
375 查看
-- lua中的coroutine提供了合作式的多线程支持,也就是说,它实际上不是在cpu上原生的多线程,
-- 只是一个线程中可以保存多个执行环境.依赖于resume与yield进行执行环境的切换.
-- 详见:http://manual.luaer.cn/2.11.html
协程中的几个函数:coroutine.create/coroutine.wrap,coroutine.resume,coroutine.yield的理解代码,仔细研究下必有收获:
function CoFunc(para1, para2)
--when coroutine.resume excute this coroutine function
--...
-- coroutine.yield在内部函数中也可以切出
local resumePara1, resumePara2 = coroutine.yield(resumeReturn1, resumeReturn2)
-- use resumePara1, resumePara2 or not continue
-- 运行到自身终止
return value;
end
local co = coroutine.create(CoFunc)
-- local coWrapFunc = coroutine.wrap(CoFunc) 这个情况下coroutine.resume不返回excuteRes和errorMsg其它一样
local true, CoFuncReturn1, CoFuncReturn2 = coroutine.resume(co,para1Value, para2Value)
-- 或者 local false, errorMsg = cfcoroutine.resume(co,para1Value, para2Value)
-- 或者 local true, yieldPara1, yieldPara2 = cfcoroutine.resume(co, para1Value, para2Value)
-- 只是一个线程中可以保存多个执行环境.依赖于resume与yield进行执行环境的切换.
-- 详见:http://manual.luaer.cn/2.11.html
协程中的几个函数:coroutine.create/coroutine.wrap,coroutine.resume,coroutine.yield的理解代码,仔细研究下必有收获:
function CoFunc(para1, para2)
--when coroutine.resume excute this coroutine function
--...
-- coroutine.yield在内部函数中也可以切出
local resumePara1, resumePara2 = coroutine.yield(resumeReturn1, resumeReturn2)
-- use resumePara1, resumePara2 or not continue
-- 运行到自身终止
return value;
end
local co = coroutine.create(CoFunc)
-- local coWrapFunc = coroutine.wrap(CoFunc) 这个情况下coroutine.resume不返回excuteRes和errorMsg其它一样
local true, CoFuncReturn1, CoFuncReturn2 = coroutine.resume(co,para1Value, para2Value)
-- 或者 local false, errorMsg = cfcoroutine.resume(co,para1Value, para2Value)
-- 或者 local true, yieldPara1, yieldPara2 = cfcoroutine.resume(co, para1Value, para2Value)
相关文章推荐
- 【quick遇到的陷阱】lua 全局
- Lua回调函数小结
- 在FreeSWITCH中执行长期运行的嵌入式脚本--Lua语言例子
- Scala and Evaluation Strategy
- Lua学习之路-3
- Lua学习之路-2
- vs2010编译lua-5.3.2
- Lua学习之路-1
- lua和c的交互
- lua中table总结
- LUA凝视语法
- Mac平台下搭建和配置Lua环境及相关问题
- VS2013+LUA配置教程
- lua 播放帧动画
- lua tutorial 06
- lua tutorial 05
- lua tutorial 04
- sublime添加直接运行语言的方法
- lua tutorial 03
- lua tutorial 02