国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Lua - Lua協(xié)同程序函數(shù)coroutine使用實例

Lua協(xié)同程序函數(shù)coroutine使用實例

2020-04-12 13:42iCode0410 Lua

這篇文章主要介紹了Lua協(xié)同程序函數(shù)coroutine使用實例,協(xié)程是協(xié)同程序的簡稱,顧名思義,就是協(xié)同工作的程序,需要的朋友可以參考下

協(xié)程是協(xié)同程序的簡稱,顧名思義,就是協(xié)同工作的程序。協(xié)程擁有自己獨立的桟、局部變量和PC計數(shù)器,同時又與其他協(xié)同程序共享全局變量和其他大部分東西;

協(xié)程與線程的主要區(qū)別在于,一個多線程程序可以同時運行幾個線程(并發(fā)執(zhí)行、搶占),而協(xié)同程序卻需要彼此協(xié)作地運行,即一個多協(xié)程程序在任意時刻只能運行一個協(xié)程,并且正在執(zhí)行的協(xié)程只會在其顯式地要求掛起(suspend)時,它的執(zhí)行才會暫停(無搶占、無并發(fā))。

 Lua中所有與協(xié)程相關的函數(shù)都在coroutine(一個table)中; 函數(shù)create用于創(chuàng)建新的協(xié)程,只有一個參數(shù)——要執(zhí)行的函數(shù),返回一個thread類型的值。

thread的狀態(tài):suspend、running、dead、normal,可以通過coroutine.status(co)來檢查co的狀態(tài)。

創(chuàng)建一個thread時,它處于掛起狀態(tài)。coroutine.resume函數(shù)用于啟動或再次啟動一個協(xié)程的執(zhí)行,并可以向coroutine傳遞參數(shù)。當一個協(xié)程結(jié)束時,主函數(shù)返回的值將作為resume的返回值。

coroutine.yield用于一個運行中的協(xié)程掛起(suspend),之后可以再恢復(resume)。yield的返回值就是resume傳入的參數(shù)。

Lua的協(xié)程模型可以類比Python的generator。

一個簡單的示例:

復制代碼 代碼如下:

> co = coroutine.create(function(a) while a > 0 do print(coroutine.yield(a)); a = a - 1; end return -1 end)
> return coroutine.resume(co, 3) --- 3是傳遞給主函數(shù)的
true        3
> return coroutine.resume(co, 4)
4
true        2
> return coroutine.resume(co, 5)
5
true        1
> return coroutine.resume(co, 6)
6
true        -1 ---主函數(shù)已經(jīng)返回
> return coroutine.resume(co, 7)
false        cannot resume dead coroutine
>

 

協(xié)程的應用 —— 生產(chǎn)者/消費者

需求:輸入一行,打印一行

 

復制代碼 代碼如下:

function send(x)
coroutine.yield(x)
end
 
function receive(co)
local s, v = coroutine.resume(co)
return v
end
 
function producer()
return coroutine.create(function()
while true do
local x = io.read()
send(x)
end
end)
end
 
function filter(prod)
return coroutine.create(function()
for line = 1, math.huge do
local x = receive(prod)
x = string.format('%5d %s', line, x)
send(x)
end
end)
end
 
function consumer(prod)
while true do
local x = receive(prod)
io.write(x, '\n')
end
end
 
prod = producer()
fil = filter(prod)
con = consumer(fil)


協(xié)程的應用 —— 迭代器(類比Python Generator)

復制代碼 代碼如下:

function seq_generator(n)
local i = 1
while i <= n do
coroutine.yield(i)
i = i + 1
end
return nil
end
 
function seq(n)
local co = coroutine.create(function() seq_generator(n) end)
return function()
local s,v = coroutine.resume(co)
return v
end
end
 
for i in seq(4) do
print(i)
end


執(zhí)行

復制代碼 代碼如下:

lua seq_generator.lua
1
2
3
4

延伸 · 閱讀

精彩推薦
  • Lua深入探究Lua中的解析表達式

    深入探究Lua中的解析表達式

    這篇文章主要介紹了深入探究Lua中的解析表達式,對于其語法部分的說明和示例都超詳細,極力推薦此文!需要的朋友可以參考下 ...

    腳本之家3542020-05-05
  • LuaLua實現(xiàn)__add方法重載示例

    Lua實現(xiàn)__add方法重載示例

    這篇文章主要介紹了Lua實現(xiàn)__add方法重載示例,本文直接給出實現(xiàn)代碼,需要的朋友可以參考下 ...

    腳本之家7452020-04-24
  • LuaLua中計算、執(zhí)行字符串中Lua代碼的方法

    Lua中計算、執(zhí)行字符串中Lua代碼的方法

    這篇文章主要介紹了Lua中計算、執(zhí)行字符串中Lua代碼的方法,類似JavaScript中eval函數(shù)的功能,在Lua中也可以實現(xiàn),需要的朋友可以參考下 ...

    腳本之家6322020-04-30
  • LuaLua中的元方法__newindex詳解

    Lua中的元方法__newindex詳解

    這篇文章主要介紹了Lua中的元方法__newindex詳解,本文講解了查詢與更新、監(jiān)控賦值、通過table給另一個table賦值等內(nèi)容,需要的朋友可以參考下 ...

    笨木頭8872020-04-09
  • LuaLua中table庫函數(shù)方法介紹

    Lua中table庫函數(shù)方法介紹

    這篇文章主要介紹了Lua中table庫函數(shù)方法介紹,本文講解了concat、insert、maxn、remove、sort、foreachi等方法,需要的朋友可以參考下 ...

    腳本之家2502020-04-17
  • LuaLua教程(二):基礎知識、類型與值介紹

    Lua教程(二):基礎知識、類型與值介紹

    這篇文章主要介紹了Lua教程(二):基礎知識、類型與值介紹,本文講解了Hello World程序、代碼規(guī)范、全局變量、類型與值等內(nèi)容,需要的朋友可以參考下 ...

    腳本之家5922020-04-28
  • LuaLua和C語言的交互詳解

    Lua和C語言的交互詳解

    這篇文章主要介紹了Lua和C語言的交互詳解,Lua和C語言通過棧完成交互,本文結(jié)合代碼實例詳細講解了交互的方法,需要的朋友可以參考下 ...

    果凍想3702020-04-14
  • LuaLua簡介、編譯安裝教程及變量等語法介紹

    Lua簡介、編譯安裝教程及變量等語法介紹

    這篇文章主要介紹了Lua簡介、編譯安裝教程及變量等語法介紹,本文同時講解了lua注釋語法、Lua命令行方式等內(nèi)容,需要的朋友可以參考下 ...

    junjie3632020-04-14
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 中国大陆一级毛片 | 国产在线资源 | 狠狠狠狠狠狠干 | 亚洲综合中文字幕在线观看 | 亚洲一区二区三区四区的 | 亚洲一级黄色 | 午夜av影院 | 国厂毛片 | 九热精品视频 | 国产精品美女久久久久aⅴ国产馆 | 日韩在线播放视频 | 91在线区 | 爱色av| 999精品在线 | baoyu123成人免费看视频 | 欧美一区二区在线视频 | 色99在线 | 午夜影院在线观看 | 欧美一区二区三区在线观看视频 | 一级毛片免费 | 日韩亚洲一区二区 | 日本中文字幕在线播放 | 精品久久久久久久久久久久 | av免费在线观看网站 | 香蕉国产精品 | 午夜网址 | 久久久国产精品视频 | 夜夜草视频 | 在线亚洲欧美 | 精品中文字幕在线 | 曰本人一级毛片免费完整视频 | 中文字幕一区二区三 | 国产精品毛片久久久久久久av | 日本在线一区二区 | 91激情在线 | 日韩中文字幕一区二区 | 综合久久网 | 欧美 日韩 中文字幕 | 国产91精品在线 | 免费不卡视频 | 一级免费毛片 |