lua併發機制之 coroutine

2021-07-23 11:29:38 字數 838 閱讀 4364

lua的coroutine也就是協程,跟c++中的執行緒有點像,但他事順序執行的。

主要需要理解三個函式

coroutine.create()、coroutine.yield()、coroutine.resume()

create函式將建立乙個協程,其引數為所執行的函式。

function corfun(x,y)

print("run cor",x,y)

if(x)

local k = coroutine.yield(x)

print("next time resume" ,k)

else

print("end")

return y

end如 local co = coroutine.create(corfun)

建立完後這個協程是處於掛起狀態的,我們需要通過resume函式來喚醒co執行其對應的函式。

如 coroutine.resume(co,10,20)

當執行函式 有額外引數需要傳遞的時候,要在resume(co, ...) ...中填寫。

執行 coroutine.resume後會返回 (true 或false) 和 (函式執行的返回值 或 yield的引數值)

例如上面corfun ,當resume第一次的時候,由於x為10,所以會執行到 coroutine.yield此時函式將會掛起,resume獲得的返回值就為true 和 x,注意這裡不會是k,

當下一次resume的時候 k會接收resume的引數。

然後會繼續執行下去print("next time resume" ,k)這個語句

大體就是這樣

寫的比較匆忙,睡覺了。。。。。。

Storm之併發機制

為了提高storm的並行能力,通常需要設定並行。1.1 worker 程序 設定worker程序數 config.setnumworkers int workers 1.2 executor 執行緒 設定executor執行緒數 topologybuilder.setspout string id,...

Srorm併發機制

一 介紹 1.執行元件 2.併發度 就是executor數量 executor執行緒是物理執行緒 task是執行執行緒 二 增加併發度 三 worker層次 1.worker工作程序上 各個spout元件 bolt元件如果在 中沒有顯式指定由多少個executor執行緒來執行,那麼預設各由1個exe...

事務併發機制

注 原文 原子性 atomic 事務必須是原子工作單元 一致性 consistent 事務在完成時,必須使所有的資料都保持一致狀態。隔離性 insulation 由事務併發所作的修改必須與任何其它併發事務所作的修改隔離。永續性 duration 事務完成之後,它對於系統的影響是永久性的。通常為了獲得...