时间:2021-05-22
do --create coroutine table --coroutine state: suspended, running, dead, normal --when create the coroutine, the status is suspended, After calling it, the status is dead --get the coroutine status by the way coroutine.status local coA = 0; local coB = 0; function createCoroutineA() coA = coroutine.create( function() --for i = 0, 10 do print("coA: ", 0); print("coB status: ", coroutine.status(coB)); --normal status print("coA status: ", coroutine.status(coA)); print("coA coroutine next status"); --coroutine.yield();--the current coroutine is suspended --end end ); print("From coA to resume coB"); end function createCoroutineB() coB = coroutine.create( function() --for i = 0, 10 do print("coB: ", 0); print("coA status: ", coroutine.status(coA)); coroutine.resume(coA); --when resume coA, the coB will suspended, calling coB ,the coA status is --suspended and dead, this time will continue to execute the next code print("coB status: ", coroutine.status(coB)); print("coB coroutine next status"); --coroutine.yield(); --end end ); print("From coB to resume coA"); end --display the coA and coB status createCoroutineA(); print(coroutine.status(coA)); createCoroutineB(); print(coroutine.status(coB)); coroutine.resume(coB); print(coroutine.resume(coB)); --if the coroutine is dead ,the resume will resume false, and can't resume the dead coroutine --print("coA status: ", coroutine.status(coA)); --print("coB status: ", coroutine.status(coB));end
注:
resume得到返回值,
如果有对应的yield在wait resume,那么yield的参数作为resum的返回值,第一个返回值表示coroutine没有错误,后面的返回值个数及其值视yeild参数而定。
如果没有yield在wait,那么返回值是对应函数的返回值,:true,* * *
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
什么是协同(coroutine)?Lua协同程序(coroutine)与线程比较类似:拥有独立的堆栈,独立的局部变量,独立的指令指针,同时又与其它协同程序共享全
这是一段分析lua协程(协同程序,coroutine)的代码,来自Luareferencemanualinterface(略有修改):复制代码代码如下:func
这是一段分析lua协程(协同程序,coroutine)的代码,来自Luareferencemanualinterface(略有修改):复制代码代码如下:func
协同程序是协同的性质,可以把两个或更多的方法以可控制的方式执行。随着协同程序,在任何给定的时间,只有其协同程序运行之一,这在运行协同程序只能暂停其执行时,明确要
Generators是Javascript的一种协同程序(coroutine简称:协程)风格,是指那些可以在执行时暂停然后又恢复的函数,该函数是在functi配