一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術(shù)及教程分享平臺!
分類導(dǎo)航

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

服務(wù)器之家 - 腳本之家 - Lua - Lua編程示例(八):生產(chǎn)者-消費者問題

Lua編程示例(八):生產(chǎn)者-消費者問題

2020-05-06 10:37腳本之家 Lua

這篇文章主要介紹了Lua編程示例(八):生產(chǎn)者-消費者問題,本文直接給出實例代碼,需要的朋友可以參考下

這個問題是比較經(jīng)典的啦,基本所有語言的多線程都會涉及到,但是沒想到Lua的這個這么復(fù)雜 抓狂
  看了好長時間才算看明白,先上個邏輯圖:

Lua編程示例(八):生產(chǎn)者-消費者問題

   開始時調(diào)用消費者,當消費者需要值時,再調(diào)用生產(chǎn)者生產(chǎn)值,生產(chǎn)者生產(chǎn)值后停止,直到消費者再次請求。設(shè)計為消費者驅(qū)動的設(shè)計。
   圖畫的不太好,可以先將Filter遮住,它是過濾器對兩個程序之間傳遞的信息進行處理。去掉Filter邏輯就更清晰些了,就是兩個“線程”(其實是兩個協(xié)同程序)互相調(diào)用。resume回到y(tǒng)ield處開始,支持嵌套,返回到棧頂?shù)膟ield位置。yield是非阻塞的“線程同步”。這到有點像linux里的管道通信。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
function receive(prod)
 print("receive is called")
 local status,value = coroutine.resume(prod)
 return value
end
 
function send(x,prod)
 print("send is called")
 return coroutine.yield(x)
end
 
function producer()
 return coroutine.create(function ()
 print("producer is called")
 while true do
 print("producer run again")
  local x = io.read()
  send(x)
 end
 end)
end
 
function filter(prod)
 return coroutine.create(function ()
 for line = 1,1000 do
  print("enter fliter "..line)
  local x = receive(prod)
  print("receive in filter finished")
  x= string.format("%5d %s",line,x)
  send(x,prod)
 end
 end)
end
 
function consumer(prod)
 print("consumer is called")
 while true do
 print("consumer run again")
 local x = receive(prod)
 print("retrun customer")
 io.write(x,"\n")
 end
end
 
p = producer()
f=filter(p)
consumer(f)


運行結(jié)果:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
consumer is called
consumer run again
receive is called
enter fliter 1
receive is called
producer is called
producer run again
fsy
send is called
receive in filter finished
send is called
retrun customer
  1 fsy
consumer run again
receive is called
enter fliter 2
receive is called
producer run again
gaga
send is called
receive in filter finished
send is called
retrun customer
  2 gaga
consumer run again
receive is called
enter fliter 3
receive is called
producer run again
......

 

延伸 · 閱讀

精彩推薦
  • LuaLua和C語言的交互詳解

    Lua和C語言的交互詳解

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

    果凍想3702020-04-14
  • 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教程(二):基礎(chǔ)知識、類型與值介紹

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

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

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

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

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

    腳本之家6322020-04-30
  • LuaLua中table庫函數(shù)方法介紹

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

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

    腳本之家2502020-04-17
  • LuaLua簡介、編譯安裝教程及變量等語法介紹

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

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

    junjie3632020-04-14
  • LuaLua中的元方法__newindex詳解

    Lua中的元方法__newindex詳解

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

    笨木頭8872020-04-09
主站蜘蛛池模板: 精品成人一区二区 | 男人疯狂进女人下部视频动漫 | piss美女厕所小便 | 免费网址视频在线看 | 日本三级在线观看免费 | 99热精品在线播放 | 日韩欧美推理片免费在线播放 | 传说之下羊妈挤羊奶网站 | 图片专区亚洲欧美另类 | 教练你好大轻点漫 | 成版人快猫永久破解版 | 成人男女网免费 | 被夫上司强迫中文 | 国产成人精品本亚洲 | 99久久精品在免费线18 | 精品久久成人 | 欧美日韩精彩视频 | 91精品国产91久久久久久 | 色综合天天网 | 天堂漫画破解版 | 性色欲情网站IWWW九文堂 | 四虎影院4hu | 久久日本片精品AAAAA国产 | 国产日产精品久久久久快鸭 | 亚洲欧美日韩综合一区久久 | 四虎影院网站 | 99视频精品国在线视频艾草 | 99久久国产综合精品女小说 | 户外露出野战hd | 亚洲成年网 | 手机在线观看伦理片 | 毛片网站免费观看 | 国产特级| 欧美四级无删版影片 | 黄瓜视频黄版 | 亚洲AV无码专区国产精品麻豆 | 九色PORNY蝌蚪视频首页 | 精品一区二区三区自拍图片区 | 精品日韩一区二区三区 | 91肥熟国产老肥熟在线 | 91porn最新网址 |