-- coroutine.create -- 创建协程
-- coroutine.yield -- 暂停执行 让出执行权
-- coroutine.resume -- 执行协程,继续执行协程
function foo(a)
print("foo", a)
return coroutine.yield(2*a)
end
co = coroutine.create(function(a, b)
print("co-body-1", a, b)
local r = foo(a+1)
print("co-body-2", r)
local r, s = coroutine.yield(a+b, a-b)
print("co-body-3", r, s)
return b, "end"
end)
print("main1", coroutine.resume(co, 1, 10))
print("main2", coroutine.resume(co, "r"))
print("main3", coroutine.resume(co, "x", "y"))
print("main4", coroutine.resume(co, "x1", "y1"))
--[[
执行结果:
co-body-1 1 10
foo 2
main1 true 4
co-body-2 r
main2 true 11 -9
co-body-3 x y
main3 true 10 end
main4 false cannot resume dead coroutine
]]
lua协程
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
上一篇:lua_State数据结构
下一篇:lua_State 结构设计
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章