Lua 協(xié)同程序(coroutine)

什么是協(xié)同(coroutine)?

Lua 協(xié)同程序(coroutine)與線程比較類似:擁有獨立的堆棧绽昼,獨立的局部變量,獨立的指令指針,同時又與其它協(xié)同程序共享全局變量和其它大部分東西沙合。

協(xié)同是非常強大的功能,但是用起來也很復雜跌帐。

線程和協(xié)同程序區(qū)別

線程與協(xié)同程序的主要區(qū)別在于首懈,一個具有多個線程的程序可以同時運行幾個線程,而協(xié)同程序卻需要彼此協(xié)作的運行谨敛。

在任一指定時刻只有一個協(xié)同程序在運行究履,并且這個正在運行的協(xié)同程序只有在明確的被要求掛起的時候才會被掛起。

協(xié)同程序有點類似同步的多線程佣盒,在等待同一個線程鎖的幾個線程有點類似協(xié)同挎袜。

基本語法


以下實例演示了以上各個方法的用法:

以上實例執(zhí)行輸出結(jié)果為:

coroutine.running就可以看出來,coroutine在底層實現(xiàn)就是一個線程。

當create一個coroutine的時候就是在新線程中注冊了一個事件肥惭。

當使用resume觸發(fā)事件的時候盯仪,create的coroutine函數(shù)就被執(zhí)行了,當遇到y(tǒng)ield的時候就代表掛起當前線程蜜葱,等候再次resume觸發(fā)事件全景。

接下來我們分析一個更詳細的實例:

以上實例執(zhí)行輸出結(jié)果為:

以上實例接下如下:

調(diào)用resume,將協(xié)同程序喚醒,resume操作成功返回true牵囤,否則返回false爸黄;

協(xié)同程序運行滞伟;

運行到y(tǒng)ield語句;

yield掛起協(xié)同程序炕贵,第一次resume返回梆奈;(注意:此處yield返回,參數(shù)是resume的參數(shù))

第二次resume称开,再次喚醒協(xié)同程序亩钟;(注意:此處resume的參數(shù)中,除了第一個參數(shù)鳖轰,剩下的參數(shù)將作為yield的參數(shù))

yield返回清酥;

協(xié)同程序繼續(xù)運行;

如果使用的協(xié)同程序繼續(xù)運行完成后繼續(xù)調(diào)用 resume方法則輸出:cannot resume dead coroutine

resume和yield的配合強大之處在于蕴侣,resume處于主程中焰轻,它將外部狀態(tài)(數(shù)據(jù))傳入到協(xié)同程序內(nèi)部;而yield則將內(nèi)部的狀態(tài)(數(shù)據(jù))返回到主程中昆雀。


生產(chǎn)者-消費者問題

現(xiàn)在我就使用Lua的協(xié)同程序來完成生產(chǎn)者-消費者這一經(jīng)典問題辱志。


以上實例執(zhí)行輸出結(jié)果為:


內(nèi)容來自:runoob.com 菜鳥教程

整理:極動云,寧波家電物聯(lián)網(wǎng)云平臺

CONTACT US: http://www.iot-jd.com

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末忆肾,一起剝皮案震驚了整個濱河市荸频,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌客冈,老刑警劉巖旭从,帶你破解...
    沈念sama閱讀 216,919評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異场仲,居然都是意外死亡和悦,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評論 3 392
  • 文/潘曉璐 我一進店門渠缕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鸽素,“玉大人,你說我怎么就攤上這事亦鳞♀珊觯” “怎么了?”我有些...
    開封第一講書人閱讀 163,316評論 0 353
  • 文/不壞的土叔 我叫張陵燕差,是天一觀的道長遭笋。 經(jīng)常有香客問我,道長徒探,這世上最難降的妖魔是什么瓦呼? 我笑而不...
    開封第一講書人閱讀 58,294評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮测暗,結(jié)果婚禮上央串,老公的妹妹穿的比我還像新娘磨澡。我一直安慰自己,他們只是感情好质和,可當我...
    茶點故事閱讀 67,318評論 6 390
  • 文/花漫 我一把揭開白布稳摄。 她就那樣靜靜地躺著,像睡著了一般侦另。 火紅的嫁衣襯著肌膚如雪秩命。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,245評論 1 299
  • 那天褒傅,我揣著相機與錄音,去河邊找鬼袄友。 笑死殿托,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的剧蚣。 我是一名探鬼主播支竹,決...
    沈念sama閱讀 40,120評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼鸠按!你這毒婦竟也來了礼搁?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,964評論 0 275
  • 序言:老撾萬榮一對情侶失蹤目尖,失蹤者是張志新(化名)和其女友劉穎馒吴,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瑟曲,經(jīng)...
    沈念sama閱讀 45,376評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡饮戳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,592評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了洞拨。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片扯罐。...
    茶點故事閱讀 39,764評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖烦衣,靈堂內(nèi)的尸體忽然破棺而出歹河,到底是詐尸還是另有隱情,我是刑警寧澤花吟,帶...
    沈念sama閱讀 35,460評論 5 344
  • 正文 年R本政府宣布秸歧,位于F島的核電站,受9級特大地震影響示辈,放射性物質(zhì)發(fā)生泄漏寥茫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,070評論 3 327
  • 文/蒙蒙 一矾麻、第九天 我趴在偏房一處隱蔽的房頂上張望纱耻。 院中可真熱鬧芭梯,春花似錦、人聲如沸弄喘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,697評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蘑志。三九已至累奈,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間急但,已是汗流浹背澎媒。 一陣腳步聲響...
    開封第一講書人閱讀 32,846評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留波桩,地道東北人戒努。 一個月前我還...
    沈念sama閱讀 47,819評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像镐躲,于是被迫代替她去往敵國和親储玫。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,665評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 1.1程序塊:Lua執(zhí)行的每段代碼萤皂,例如一個源代碼文件或者交互模式中輸入的一行代碼撒穷,都稱為一個程序塊 1.2注釋:...
    c_xiaoqiang閱讀 2,588評論 0 9
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn)裆熙,斷路器端礼,智...
    卡卡羅2017閱讀 134,654評論 18 139
  • title標題: A Web Crawler With asyncio Coroutinesauthor作者: A...
    彰樂樂樂樂閱讀 2,054評論 0 8
  • 協(xié)同程序與線程差不多,也就是一條執(zhí)行序列弛车,擁有自己獨立的棧齐媒,局部變量和指令指針,同時又與其它協(xié)同程序共享全局變量和...
    chiguozi閱讀 17,988評論 0 10
  • 路燈茫茫被夜幕掩埋 正如有些話我還沒有說完 月亮黑漆逃離到你眼前 烏朵的寂寞最終丟掉思念 是否還有人會去明白 夢境...
    你要天下第一快樂閱讀 407評論 5 3