協程就是協程,不是線程。
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