lua coroutine 一问
以下内容均出自" pil 9.1 协同的基础":"当我们创建协同程序成功时,其为挂起态,即此时协同程序并未运行。“
co = coroutine.create(function ()
for i=1,10 do
print("co", i)
coroutine.yield()
end
end)
"函数coroutine.resume使协同程序由挂起状态变为运行态:执行这个协同程序,程序将在第一个yield处被挂起:"coroutine.resume(co) --> co 1
print(coroutine.status(co)) --> suspended
coroutine.resume(co) --> co 2
coroutine.resume(co) --> co 3
...
coroutine.resume(co) --> co 10
coroutine.resume(co) -- prints nothing
print(coroutine.resume(co))
--> false cannot resume dead coroutine
问:执行到”print(coroutine.resume(co))“
协同状态为”dead",后面再用”coroutine.resume(co)“函数也没办法使协同运行,这个协同肯定是能再次启动的,这种情况是为什么,怎么办?请高手帮忙! 有现成的wait.lua不用啊,干嘛要深究这些事情。 只有suspend才能变成running吧,dead就结束了 天花乱坠的看不懂。。。。 这算是基本用法吧,,,
不会用可咋写程序呢
协同状态为”dead",后面再用”coroutine.resume(co)“函数也没办法使协同运行,这个协同肯定是能再次启动的,这种情况是为什么,怎么办?请高手帮忙!
you should be able to create a new coroutine with the same callback function:
co = coroutine.create(function ()) 任何进程或线程,或者是这里说的协程,都是有生命周期的。你的协程已经执行完了,结束了生命周期,怎么还能resume呢?即使你再运行这段代码,虽然干的同样的话,但实际已是另一个线程了。进程线程是有生命周期的,它不等于一段静态的代码。
页:
[1]