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