Lua程式設計(七)協同程式基礎邏輯

2021-06-02 04:41:09 字數 1373 閱讀 5085

co=coroutine.create(function()

print("hi")

end)

print(coroutine.status(co))

coroutine.resume(co)

print(coroutine.status(co))

print()

co=coroutine.create(function()

for i=1,2 do

print("co",i)

coroutine.yield()

endend)

coroutine.resume(co)

print(coroutine.status(co))

coroutine.resume(co)

print(coroutine.status(co))

coroutine.resume(co) --沒有輸出

print(coroutine.status(co))

print()

co=coroutine.create(function(a,b,c)

print("co",a,b,c)

end)

coroutine.resume(co,1,2,3)

co=coroutine.create(function(a,b)

print("i'm before yield") --第一次執行執行

coroutine.yield(a+b,a-b,"needless args") --在這停住,返回yield的引數

print("mgs")

end)

print(coroutine.resume(co,20,10)) --引數傳給yield,處理後再返回

print("i print first")

coroutine.resume(co)

co=coroutine.create(function()

return "i'll return"

end)

print(coroutine.resume(co)) --主函式的返回值回傳給resume

print()

輸出結果:

suspended

hidead

co 1

suspended

co 2

suspended

dead

co 1 2 3

i'm before yield

true 30 10 needless args

i print first

mgstrue i'll return

本篇部落格出自  阿修羅道

lua協同程式

co coroutine.create function a print co a end coroutine.resume co,1,2,3 co 1 co coroutine.create function a,b coroutine.yield a b,a b end 在resume呼叫的返回...

初識lua協同程式

協程類似與執行緒,但與執行緒不同,執行緒可以多個執行緒同時執行,但是協程需要彼此協作的執行,乙個具有多個協程的程式任意時刻只能執行乙個協程,並且在執行協程只會在其顯示地要求掛起時,才會暫停。乙個協程有4種不同的狀態 掛起,執行,死亡和正常。建立乙個協程時,他處於掛起狀態。coroutine.stat...

lua協同程式理解

參考 協程和多執行緒下的執行緒類似 有自己的堆疊,自己的區域性變數,有自己的指令指標,但是和其他協程程式共享全域性變數等資訊。執行緒和協程的主要不同在於 多處理器的情況下,概念上來說多執行緒是同時執行多個執行緒,而協程是通過協作來完成,任何時刻只有乙個協程程式在執行。並且這個在執行的協程只有明確被要...