初識協程

--[[
協程(協同程序):
有自己的堆棧,自己的局部變量,自己的指令指針,與其他協程共享全局變量。
在多處理器的情況下,可以同時運行多個線程,但在指定的某一時刻只有一個協程在運行,
並且這個正在運行的協程在指定的時候掛起。

調用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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章