亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

舉例詳解Lua中的協同程序編程

2024-07-21 23:04:53
字體:
來源:轉載
供稿:網友

 協同程序是協同的性質,可以把兩個或更多的方法以可控制的方式執行。隨著協同程序,在任何給定的時間,只有其協同程序運行之一,這在運行協同程序只能暫停其執行時,明確要求暫停。

上述定義可能看起來模糊。來告訴它更清楚,假設我們有兩個方法,一個主程序方法和協同程序。當我們使用恢復功能調用協程,其開始執行,當我們調用yield功能,暫停執行。再次同協程可以繼續從它被暫停的另一個恢復功能調用執行。這個過程可以繼續,直到執行了協程的結束。
協同程序可用的功能

下表列出了在Lua協同程序及其相應的使用所有的可用功能。

Lua,協同

 例子

讓我們看一個例子就明白了協程的概念。

 

復制代碼 代碼如下:
co = coroutine.create(function (value1,value2)
   local tempvar3 =10
   print("coroutine section 1", value1, value2, tempvar3)
   local tempvar1 = coroutine.yield(value1+1,value2+1)
   tempvar3 = tempvar3 + value1
   print("coroutine section 2",tempvar1 ,tempvar2, tempvar3)
   local tempvar1, tempvar2= coroutine.yield(value1+value2, value1-value2)
   tempvar3 = tempvar3 + value1
   print("coroutine section 3",tempvar1,tempvar2, tempvar3)
   return value2, "end"
end)

 

print("main", coroutine.resume(co, 3, 2))
print("main", coroutine.resume(co, 12,14))
print("main", coroutine.resume(co, 5, 6))
print("main", coroutine.resume(co, 10, 20))

 

當我們運行上面的程序,會得到下面的輸出。

 

復制代碼 代碼如下:
coroutine section 1 3 2 10
main true 4 3
coroutine section 2 12 nil 13
main true 5 1
coroutine section 3 5 6 16
main true 2 end
main false cannot resume dead coroutine

 

上面的例子是做什么?

如之前所提到的,我們使用恢復功能的動作開始,并產生函數來停止操作。此外,可以看到有由協程恢復功能接收多個返回值。這里將解釋上面的程序每一個步驟,使之清楚。

  •     首先,我們創建了一個協同程序,并把它分配給變量名合作和協同程序需要在兩個變量作為參數。
  •     當我們稱之為第一恢復功能,值3和2分別被保持在臨時變量value1和value2,直到協程的結束。
  •     為了理解這一點,我們已經使用了tempvar3初始化為10,它被由協程的后續調用更新為13和16,因為值1被保留為3,整個協同程序的執行。
  •     第一個coroutine.yield返回兩個值4和3 是由更新輸入參數3和2,yield語句得到了恢復函數。它還接收協程執行的真/假狀態。
  •     關于協程的另一件事是如何恢復調用下一參數寫成的照顧,在上述的例子; 可以看到,coroutine.yield分配變量接收到下一次調用參數,它提供做新業務與現有參數值之間的關系的一種強有力的方式。
  •     最后,一旦在協同程序的所有語句執行時,后續調用將返回false,并且“不能恢復死協同程序”語句作為回應。

另一個協程的例子

讓我們來看一個簡單的協同程序返回一個數字,從1到5 yield函數恢復功能。它創建協同程序,如果沒有則恢復現有的協程。

 

復制代碼 代碼如下:
function getNumber()
   local function getNumberHelper()
      co = coroutine.create(function ()
      coroutine.yield(1)
      coroutine.yield(2)
      coroutine.yield(3)
      coroutine.yield(4)
      coroutine.yield(5)
      end)
      return co
   end
   if(numberHelper) then
      status, number = coroutine.resume(numberHelper);
      if coroutine.status(numberHelper) == "dead" then
         numberHelper = getNumberHelper()
         status, number = coroutine.resume(numberHelper);
      end
      return number
   else
      numberHelper = getNumberHelper()
      status, number = coroutine.resume(numberHelper);
      return number
   end
end
for index = 1, 10 do
   print(index, getNumber())
end

 

當我們運行上面的程序,會得到下面的輸出。

 

復制代碼 代碼如下:
1 1
2 2
3 3
4 4
5 5
6 1
7 2
8 3
9 4
10 5

 

往往有協同程序與多道程序語言的線程的比較,但要明白,協同程序線程有類似的功能,但只有一次執行,并不會執行兼任。

我們控制程序的執行順序,以滿足與提供暫時保留某些信息的需求。使用全局變量與協程,提供了協同程序更加靈活。
 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美视频国产精品| 国产精品久久久久久久久久新婚| 日韩精品在线电影| 国产精品久久久久久亚洲调教| 亚州国产精品久久久| 亚洲国产第一页| 亚洲国产精品久久久久秋霞蜜臀| 久久久久久有精品国产| 国产精品亚洲视频在线观看| 亚洲国产精品成人一区二区| 一区二区亚洲精品国产| 久久精品国产亚洲| 欧美裸体xxxx极品少妇| 亚洲综合色激情五月| 国产成人avxxxxx在线看| 北条麻妃在线一区二区| 亚洲欧美综合精品久久成人| 欧美高清videos高潮hd| 疯狂蹂躏欧美一区二区精品| 伊人久久大香线蕉av一区二区| 91精品国产综合久久香蕉922| 国产精品综合不卡av| 91免费视频网站| 日韩av在线直播| 另类天堂视频在线观看| 日韩欧美在线视频免费观看| 国产精品直播网红| 欧美激情一区二区三区成人| 亚洲欧洲免费视频| xvideos亚洲人网站| 午夜精品久久久久久久白皮肤| 5278欧美一区二区三区| 亚洲国产精品网站| 国产精品7m视频| 亚洲性线免费观看视频成熟| 欧美成人午夜激情视频| 在线播放国产一区中文字幕剧情欧美| 国产黑人绿帽在线第一区| 中文字幕国产亚洲2019| 尤物九九久久国产精品的特点| 91网站在线免费观看| 欧美日韩国产综合视频在线观看中文| 日韩精品中文字幕在线播放| 久久九九有精品国产23| 亚洲美女在线观看| 少妇高潮 亚洲精品| 国产日韩欧美电影在线观看| 国产亚洲一区精品| 高清一区二区三区日本久| 最新国产精品拍自在线播放| 国产成人福利网站| 在线亚洲男人天堂| 国产精品久久婷婷六月丁香| 欧美成人精品h版在线观看| 久久久久久久97| 国产精品久久久久久久久免费看| 国产精品久久久久77777| 国产精品美女午夜av| 久久免费视频这里只有精品| 亚洲精品videossex少妇| 欧美野外wwwxxx| 国产精品爱久久久久久久| 九九热这里只有精品免费看| 欧美国产高跟鞋裸体秀xxxhd| 91av在线视频观看| 91系列在线观看| 国产精品美女久久| 国产亚洲欧美另类中文| 91成品人片a无限观看| 色综合色综合久久综合频道88| 国产欧美va欧美va香蕉在| 亚洲乱码国产乱码精品精天堂| 91亚洲精品一区二区| 毛片精品免费在线观看| 亚洲开心激情网| 亚洲成色777777女色窝| 久久视频这里只有精品| 国产在线一区二区三区| 中文字幕日韩专区| 国产欧美日韩专区发布| 美女福利精品视频| 亚洲女人被黑人巨大进入al| 色综合导航网站| 日韩欧美国产激情| 亚洲国产精彩中文乱码av在线播放| 神马久久桃色视频| 日韩视频免费在线观看| 久久久久国产精品免费网站| 欧美在线中文字幕| 欧美性猛交xxxx富婆弯腰| 国产精品私拍pans大尺度在线| 亚洲免费视频网站| 2021国产精品视频| 欧美日韩国产丝袜美女| 亚洲xxxx妇黄裸体| 日韩小视频在线| 欧美做受高潮电影o| 欧美猛男性生活免费| 久久精品中文字幕免费mv| 国产精品色视频| 国产精品美女久久| 91视频-88av| 亚洲福利视频在线| 91美女福利视频高清| 日韩高清有码在线| 国产欧美精品一区二区三区介绍| 91久热免费在线视频| 久久久久久久国产精品视频| 久久久之久亚州精品露出| 一本色道久久综合狠狠躁篇怎么玩| 91精品成人久久| 日韩日本欧美亚洲| 另类少妇人与禽zozz0性伦| 亚洲精品720p| 夜夜狂射影院欧美极品| 亚洲一区二区久久久| 亚洲国产97在线精品一区| 欧美成人中文字幕| 亚洲人成自拍网站| 日韩精品免费在线视频| 在线播放国产一区中文字幕剧情欧美| 97免费中文视频在线观看| 国产综合视频在线观看| 欧美日韩激情小视频| 久久久久久网站| 久久精品影视伊人网| 国产精品尤物福利片在线观看| 在线播放国产精品| 美女999久久久精品视频| 国产伦精品一区二区三区精品视频| 国产精品劲爆视频| 国产欧美精品在线| 久久精品男人天堂| 国产欧美日韩亚洲精品| 久久激情视频久久| 国产性猛交xxxx免费看久久| 久久久久久成人| 深夜福利91大全| 精品毛片三在线观看| 少妇高潮久久77777| 最新69国产成人精品视频免费| 国产亚洲精品成人av久久ww| 97视频在线免费观看| 综合av色偷偷网| 亚洲黄页视频免费观看| 欧美性极品xxxx娇小| 91免费看视频.| 欧美在线国产精品| 中文字幕亚洲综合久久筱田步美| 日本最新高清不卡中文字幕| 在线成人激情黄色| 亚洲欧美国产制服动漫| 国产精品久久久久久久久免费| 欧美国产极速在线| 精品一区二区三区四区| 久久激情视频久久| 亚洲欧美中文字幕在线一区| 91网站免费观看| 日韩亚洲在线观看| 91精品啪在线观看麻豆免费| 国产精品久久久久久亚洲调教| 亚洲日本成人女熟在线观看| 色婷婷av一区二区三区久久| 日韩电影中文 亚洲精品乱码|