您的位置:首页 > 编程语言 > Lua

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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: