Lua中的協程coroutine簡介

2021-07-02 19:26:43 字數 1071 閱讀 2827

lua中的協程coroutine

lua中的協程有自己的堆疊,自己的區域性變數,有自己的指令指標,但是和其他協程程式共享全域性變數等資訊。任何時刻只有乙個協程程式在執行。並且這個在執行的協程只有明確被要求掛起時才會被掛起。

建立乙個協程,引數是乙個function,作用如thread

local c = coroutine.create( function() 

print( "here" )

end )

協程的三狀態:掛起,執行,停止。

建立之後預設是掛起的,需要自己coroutine.resume( c )執行。通過coroutine.yield()將一段正在執行的**掛起。

coroutine中的resume和yield是可以交換資料的。

示例**:

local c = coroutine.create( function( arg1, arg2 )

print( "coroutine", arg1, arg2 )

end)

coroutine.resume( c, 111, 222 ) -- 由於沒有上次yield的呼叫,這裡的引數將傳入到function中的arg1,arg2

示例**:

local c = coroutine.create ( function ()

print( "coroutine", coroutine.yield( 6, 7 ) ) -- 這裡收到 resume2 的 4, 5引數

end )

print( "resume 1 :", coroutine.resume( c ) )

print( "resume 2 :", coroutine.resume( c, 4, 5 ) ) -- 這裡收到yield 的 6, 7引數

輸出resume 1 :true67

coroutine4 5

resume 2 :true

Lua協程例子

lua的協程是好東西,跟unity的協程還是不太一樣,下面寫了乙個例子,直接上 co coroutine.create function body print hi coroutine end print type co print coroutine.status co coroutine.res...

Lua 程式設計 協程

乙個協程 coroutine 與執行緒 thread,這裡指 多執行緒 中的執行緒 類似 它是乙個執行序列,擁有自己的棧,區域性變數,指令指標,但是與其他的協程共享全域性變數和其他大部分東西。從概念上講,協程與執行緒最大的區別是 在乙個多處理器機器上,乙個多執行緒程式可以並行地執行多個執行緒。而協程...

Lua學習 協程

print 協同程式 print 協程的建立 常用方式 coroutine.create fun function print 123 end co coroutine.create fun 協程的本質是乙個執行緒物件 print co print type co coroutine.wrap co...