Lua 協程和執行緒區別

2022-03-22 18:40:59 字數 656 閱讀 1199

協程就是協程,不是執行緒。

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()

endlocal co = coroutine.create(run)

local data =

coroutine.resume(co, data)

for i=1,5 do

print("main", i)

endcoroutine.resume(co, data)

執行結果:

p.p1

span.s1

協程和執行緒的區別

棧容量,執行緒預設都是2m,這個固定值對於小型的方法來說有點浪費,而對於永遠大資料量的方法是遠遠不夠的。協程的棧初始大小是2k,很輕便,開銷不大,按需自動增長和減少棧記憶體。最大可以達到1gb.排程問題。執行緒的排程是由核心排程器來排程的,核心排程器每隔幾毫秒進行排程,終止當前執行緒,儲存其狀態,然...

程序和執行緒 協程的區別

現在多程序多執行緒已經是老生常談了,協程也在最近幾年流行起來。python中有協程庫gevent,py web框架tornado中也用了gevent封裝好的協程。本文主要介紹程序 執行緒和協程三者之間的區別。一 概念 1 程序 程序是具有一定獨立功能的程式關於某個資料集合上的一次執行活動,程序是系統...

程序和執行緒 協程的區別

現在多程序多執行緒已經是老生常談了,協程也在最近幾年流行起來。python中有協程庫gevent,py web框架tornado中也用了gevent封裝好的協程。本文主要介紹程序 執行緒和協程三者之間的區別。一 概念 1 程序 程序是具有一定獨立功能的程式關於某個資料集合上的一次執行活動,程序是系統...