Lua學習筆記四 協同程式coroutine

2021-04-27 15:51:57 字數 528 閱讀 9398

lua中的協同程式類似於多執行緒,但是與多執行緒還是有點區別的,區別在於協同程式必須必須合作,且同一時刻只有執行乙個協同程式。

這是乙個簡單的示例函式,下面看看協同程式的呼叫

在上面的呼叫**中,右邊附上了列印輸出,第一行是建立乙個協同程式,第二行檢視協同程式的返回值,第三行檢視此時協同程式的狀態,處於suspended(掛起)狀態,第四行執行協同程式,第五行檢視此時協同程式狀態,處於dead(死亡)狀態。

協同程式有四種狀態,suspended(掛起)、running(執行)、dead(死亡)、normal(正常),

當呼叫coroutine.create後,處於掛起狀態

呼叫coroutine.resume後,處於執行狀態,執行完畢後,處於死亡狀態

當乙個協同程式a呼叫另乙個協同程式b後,a就處於正常狀態,b處於執行狀態

協同程式傳遞引數:

在resume呼叫中,除第乙個值外,其餘值都將傳給yield,執行後的返回之中,第乙個值為boolean型別,協同程式執行是否正常,其餘的值是對應yield的返回值。

Lua學習筆記之協同程式

lua學習筆記之協同程式 1 協同程式與多執行緒情況下的執行緒比較類似,有自己的堆疊。自己的區域性變數,有自己的指令指標,但是和其他協同程式共享全域性變數等很多資訊。執行緒和協同程式的主要不同在於 在多核處理器情況下,多執行緒程式同時執行多個執行緒,而協同程式是通過協作來完成,在任意指定時刻只有乙個...

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...