lua 协程求解,初学希望大家给点提示


初学lua,最近看到一个协程的代码时不明白其意思了,想请教下大家

hxc = coroutine.create (function ()
print("hxc", coroutine.yield())
end)
coroutine.resume(hxc)
coroutine.resume(hxc, 4, 5) --> hxc 4 5

为什么第一个coroutine.resume(hxc) 啥也不输出?在这里不得其解,和第二个相比只多出了个4,5参数。 我原以为至少会输出一个 hxc,当然实际代码也啥都不输出。

lua

阿良良木·历 10 years, 9 months ago

因为coroutine.create建的coroutine一开始就处于suspended状态,第一次resume才开始执行:

   
  co = coroutine.create (function ()
  
print("co")
end)

print(coroutine.status(co)); --> suspended

coroutine.resume(co); --> co

所以在你的代码里,第一次resume让hxc开始执行,hxc输出"hxc"之后yield。第二次resume返回到print,输出4 5。

春哥教大神官 answered 10 years, 9 months ago

Your Answer