lua的協程是好東西,跟unity的協程還是不太一樣,下面寫了乙個例子,直接上**:
co=coroutine.create(function
() -- body
print
"hi coroutine";
end)
print(type(co));
print(coroutine.status(co));
coroutine.resume(co)
print(coroutine.status(co));
print
"-------------------------------";
print
"-------------------------------";
co1=coroutine.create(function
() -- body
print
"hi coroutine";
coroutine.yield();
print
"yield end start";
end)
print(type(co1));
print(coroutine.status(co1));
coroutine.resume(co1)
print(coroutine.status(co1));
coroutine.resume(co1)
print(coroutine.status(co1));
print
"-------------------------------";
print
"-------------------------------";
co2=coroutine.create(function
() for i=1,10
doprint("item",i)
coroutine.yield();
endend)
print(type(co2));
print(coroutine.status(co2));
coroutine.resume(co2)
print(coroutine.status(co2));
print("main 1")
coroutine.resume(co2)
print(coroutine.status(co2));
print("main 2")
print
"-------------------------------";
print
"-------------------------------";
--lua中協程可以通過resume-yield來交換資料
--1.通過resume把引數傳遞給協同主程式
co3=coroutine.create(function
(a,b)
-- body
print("co",a,b);
end)
print(coroutine.resume(co3,1,2))
print
"-------------------------------";
print
"-------------------------------";
--2.資料通過yield傳遞給resume,true表示傳遞成功,true之後的部分即是yield的引數
co4=coroutine.create(function
(a,b)
-- body
coroutine.yield(a+b,a-b);
end)
print(coroutine.resume(co4,1,5))
--3.把resume的引數傳遞給yield
print
"-------------------------------";
print
"-------------------------------";
co5=coroutine.create(function
() -- body
print("co5",coroutine.yield());
end)
coroutine.resume(co5);
coroutine.resume(co5,4,5);
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...
lua協程再探
lua語言的協程中yield關鍵字可以掛起當前coroutine執行,並暫時儲存臨時變數值,該值即是第二次呼叫 resume 時傳入的引數!co coroutine.create function value1,value2 local tempvar3 10 print coroutine sec...