--[[
協程(協同程序):
有自己的堆棧,自己的局部變量,自己的指令指針,與其他協程共享全局變量。
在多處理器的情況下,可以同時運行多個線程,但在指定的某一時刻只有一個協程在運行,
並且這個正在運行的協程在指定的時候掛起。
調用resume函數會將協程由掛起狀態轉爲運行狀態
調用yield函數會將協程由運行狀態轉爲掛起狀態,並且協程會返回yield函數的參數
]]
co = coroutine.create(function(a, b)
print("co", a, b)
coroutine.yield(a + b, a - b)
print("co", a, b)
end)
print(coroutine.status(co)) -- suspended
print(coroutine.resume(co, 20, 10)) -- true 30 10 :返回yield函數的參數
print(coroutine.status(co)) -- suspended
print(coroutine.resume(co)) -- true :成功調用
print(coroutine.status(co)) -- dead :協程運行結束
print(coroutine.resume(co)) -- false cannot resume dead coroutine :協程已dead