Lua coroutine 協同程式

2021-09-18 03:31:10 字數 2185 閱讀 9124

定義和啟動

--lua裡面的協同程式(coroutine)

--暫定函式,可以掛起,可以一步一步的執行,可以暫停

--第一種定義,啟動

--1、定義協同程式(coroutine.create)

co=coroutine.create(

function (a,b)

print(a+b)

end)--2、啟動協程(coroutine.resume)

coroutine.resume(co,10,20)

--第二種定義,啟動

--1、定義協同程式(coroutine.wrap)

co=coroutine.wrap(

function (a,b)

print(a+b)

end)--2、啟動協程(coroutine.resume)

co()

coroutine.yield()–掛起函式 coroutine.resume(co)-- 繼續執行協程

--1、定義協程coroutine.create

--2、啟動協程coroutine.resume()可以傳遞引數

--3、暫定協程coroutine.yield

--4、繼續執行協程coroutine.resume (不需要傳遞引數可以)

co=coroutine.create(

function (a,b)

print(a+b)

coroutine.yield()--掛起函式

print(a-b)

end)coroutine.resume(co,10,20)

print("call over")

coroutine.resume(co)-- 繼續執行協程

--執行了print(a-b)

協同程式的返回值

co=coroutine.create(

function (a,b)

print(a+b)

coroutine.yield('暫定時候的返回值放在這裡')--掛起函式

print(a-b)

return "coroutine over",400,'最後的返回值'

end)res,res1=coroutine.resume(co,10,20)

print(res)--第乙個返回值(都是bool值,代表是否成功啟動了協同程式)

print(res1)--第二個返回值

print("call over")

res2,res3,res4=coroutine.resume(co)-- 繼續執行協程

print(res2)--第乙個返回值

print(res3)--第二個返回值

print(res4)--第三個返回值

coroutine.status(co) 檢視協程的執行狀態(dead之後,協程沒法重寫啟動執行了)

co=coroutine.create(

function (a,b)

print(a+b)

print('1:'..coroutine.status(co))--結果為running 的時候,只有在協程內部

coroutine.yield('暫定時候的返回值放在這裡')--掛起函式

print('2:'..coroutine.status(co))

print(a-b)

print('3:'..coroutine.status(co))

end)print('4:'..coroutine.status(co)) --結果suspended(暫停的,還未啟動的),啟動之前

res,res1=coroutine.resume(co,10,20)

print('5:'..coroutine.status(co))--結果suspended,還是暫停的,暫停的時候

res2,res3,res4=coroutine.resume(co)-- 繼續執行協程

print('6:'..coroutine.status(co))

輸出結果:

4:suspended

301:running

5:suspended

2:running

-103:running

6:dead

lua coroutine 引數說明

co 1 2 out true 3 co 4 out true 5 out false local status,returnvs coroutine.resume co,params co 為 所要啟動的協程。第一次呼叫co 時 params 為co函式入口處的引數。非首次呼叫時,params作為...

協同辦公協同的到底是什麼?

偶然間想到這個問題,於是便試著去回答。從字面理解,協同就是共同協作,也就是說協同辦公作用的物件是兩個或者多個個體,這些物件共同處理完成某項工作或某個任務。可仔細一想不對啊,很多的工作是不需要多個人去合作完成的,比如說我,我是文案人員,所以我只需要把東西寫好就可以了,根本不需要跟別人合作嘛。那協同辦公...

邊雲協同的優點 邊雲協同

邊雲協同解決方案 邊雲協同解決方案,基於雲原生的開放架構,構建邊雲業務協同能力。打造面向5g ai時代的ict基礎設施,助力企業客戶實現數位化轉型。邊雲協同解決方案 邊雲協同解決方案,基於雲原生的開放架構,構建邊雲業務協同能力。打造面向5g ai時代的ict基礎設施,助力企業客戶實現數位化轉型。邊雲...