Lua 協程和線程區別


 

協程就是協程,不是線程。

CPU執行單位是線程,不是什么協程。

協程,是同步執行,不是並行,只是切了一個上下文了,為你保存原來的上下文而已。

切到第二個協程時,原來的協程處於掛起狀態。

這個特指lua的協程。

Unity的協程也是這么回事。

 

lua協程例子:

 

local function run(data)
print("co-body", 1, data.a)
print("co-body", 2, data.a)
print("co-body", 3, data.a)
coroutine.yield()
print("co-body", 4, data.a)
print("co-body", 5, data.a)
coroutine.yield()
end

 

local co = coroutine.create(run)

 

local data = {a=1}
coroutine.resume(co, data)

 

for i=1,5 do
print("main", i)
end
coroutine.resume(co, data)

 

運行結果:

 

co-body 1 1

co-body 2 1

co-body 3 1

main 1

main 2

main 3

main 4

main 5

co-body 4 1

co-body 5 1

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM