Lua學習 協程

2021-10-22 23:09:02 字數 1687 閱讀 4442

print

("************協同程式************"

)print

("************協程的建立************"

)--常用方式

-- coroutine.create()

fun =

function()

print

(123

)end

co = coroutine.

create

(fun)

--協程的本質是乙個執行緒物件

print

(co)

print

(type

(co)

)--coroutine.wrap()

co2 = coroutine.

wrap

(fun)

print

(type

(co2)

)print

("************協程的執行************"

)--第一種方式 對應的 是通過 create建立的協程

coroutine.

resume

(co)

--第二種方式

co2(

)print

("************協程的掛起************"

)fun2 =

function()

local x =

1while

true

doprint

(x) x = x +

1--協程的掛起函式

print

(coroutine.

status

(con3)

) coroutine.

yield

(x)end

endcon3 = coroutine.

create

(fun2)

--預設第乙個返回值是協程是否啟動成功

--第二個才是yield裡的返回值

tempi,temp2= coroutine.

resume

(con3)

print

(temp2)

coroutine.

resume

(con3)

coroutine.

resume

(con3)

coroutine.

resume

(con3)

--這種方式的協程呼叫 也可以有返回值 只是沒有預設的第乙個返回值了

co4 = coroutine.

wrap

(fun2)

print

(co4()

)co4()

co4(

)co4()

print

("************協程的狀態************"

)--coroutine.status(協程物件)

--dead 結束

--suspended 暫停

--running 進行中

--print(coroutine.status(co2))

print

(coroutine.

status

(co)

)

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協程再探

lua語言的協程中yield關鍵字可以掛起當前coroutine執行,並暫時儲存臨時變數值,該值即是第二次呼叫 resume 時傳入的引數!co coroutine.create function value1,value2 local tempvar3 10 print coroutine sec...