婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Lua編程示例(八):生產者-消費者問題

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

熱門標簽:艾比利外呼系統 衡水外呼線路解決 昆明電話外呼系統好么 海口智能語音電銷機器人好用嗎 免費門店地圖標注注冊入駐 杞縣地圖標注app 電話機器人每天搜索多少次 陜西便宜電銷機器人軟件 外呼系統一天耗費多少流量

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

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


 

 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)


運行結果:

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
......

您可能感興趣的文章:
  • Lua編程示例(一):select、debug、可變參數、table操作、error
  • Lua編程示例(二):面向對象、metatable對表進行擴展
  • Lua編程示例(三):稀疏表、雙端隊列、格式化輸出、表和循環表的格式化輸出
  • Lua編程示例(四):Lua標準庫之表庫、字符串庫、系統庫
  • Lua編程示例(五): C語言對Lua表的讀取和添加
  • Lua編程示例(六): C語言調用Lua函數
  • Lua編程示例(七):協同程序基礎邏輯

標簽:海口 臨滄 宿遷 西寧 昌都 泰安 營口 南京

巨人網絡通訊聲明:本文標題《Lua編程示例(八):生產者-消費者問題》,本文關鍵詞  Lua,編程,示例,八,生產者,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Lua編程示例(八):生產者-消費者問題》相關的同類信息!
  • 本頁收集關于Lua編程示例(八):生產者-消費者問題的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 滁州市| 新源县| 鄂尔多斯市| 石阡县| 巩义市| 青岛市| 天全县| 海城市| 大埔县| 隆林| 濮阳市| 毕节市| 佛学| 久治县| 浦东新区| 青海省| 宜黄县| 申扎县| 呼玛县| 昌乐县| 界首市| 嘉兴市| 祁门县| 望城县| 尼玛县| 龙门县| 姚安县| 青神县| 成武县| 象州县| 田林县| 乌拉特后旗| 泗水县| 合水县| 茌平县| 梅州市| 南岸区| 邛崃市| 福州市| 镇安县| 炉霍县|