好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > 淺談chuck-lua中的多線程

淺談chuck-lua中的多線程

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

chuck-lua支持actor模式的線程模型.可以通過cthread.new創建線程,然后通過cthread.sendmail向線程發送消息.

與skynet這種框架不同,chuck-lua并不提供多線程的任務/消息調度功能,每個線程維護了一個簡單的線程郵箱,用于緩存其它線程發過來的消息.

下面看一個簡單的多線程服務器示例:

mtserver.lua

local chuck = require("chuck")
local engine = require("distri.engine")
local socket_helper = chuck.socket_helper
local Distri = require("distri.distri")
local cthread = chuck.cthread

local worker 

function on_new_client(fd)
  cthread.sendmail(worker,{fd})
end

local fd = socket_helper.socket(socket_helper.AF_INET,
                 socket_helper.SOCK_STREAM,
                 socket_helper.IPPROTO_TCP)
socket_helper.addr_reuse(fd,1)

local ip = "127.0.0.1"
local port = 8010

if 0 == socket_helper.listen(fd,ip,port) then
  print("server start",ip,port)
  local server = chuck.acceptor(fd)
  server:Add2Engine(engine,on_new_client)
  Distri.Signal(chuck.signal.SIGINT,Distri.Stop) 
  worker = cthread.new("distri/test/worker.lua")
  Distri.Run()
end

worker.lua

local chuck = require("chuck")
local socket = require("distri.socket")
local engine = require("distri.engine")
local clone  = chuck.packet.clone
local cthread = chuck.cthread
local Distri = require("distri.distri")

--設置郵件處理函數
cthread.process_mail(engine,function (sender,mail)
  local fd = table.unpack(mail)
  local s = socket.stream.New(fd)
  if s:Ok(4096,socket.stream.decoder.rawpacket(),function (_,msg,errno)
    if msg then
      s:Send(clone(msg))
    else
      s:Close(errno)
      s = nil
    end
  end) then
    s:SetRecvTimeout(5000)
  else
    s:Close()
  end 
end)

Distri.Run()

這個示例很簡單,主線程啟動監聽,創建一個線程,當接收到連接時就將fd發送給worker線程.

在這里需要簡單介紹一下chuck-lua線程相關的一些細節.

因為各線程跑在獨立的虛擬機上,因此無法直接通過消息的方式將一個虛擬機中的對象發送到另一個線程中.目前sendmail將作為消息傳遞給它的lua table序列化為一種適合傳輸的對象,目標線程接收這個對象之后再重新轉化成本線程虛擬機中的lua table.目前消息支持lua中的所有基本類型,但為了安全考慮,不支持直接傳遞userdata類型.

用cthread.sendmail向目標線程發送消息時,如果到達目標郵箱的緩沖上線將會阻塞.所有期望處理郵件消息的線程都必須調用cthread.process_mail設定消息回調函數.如果不設定,將可能導致消息發送線程永久阻塞.

線程使用join模式創建,創建者可以通過cthread.join等待線程的結束.

以上所述就是本文的全部內容了,希望大家能夠喜歡。

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

巨人網絡通訊聲明:本文標題《淺談chuck-lua中的多線程》,本文關鍵詞  淺談,chuck-lua,中的,多,線程,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《淺談chuck-lua中的多線程》相關的同類信息!
  • 本頁收集關于淺談chuck-lua中的多線程的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 亚洲欧美日韩中另类在线| 污图无遮挡| 牛鞭擦进女图片| 精品国产一区二区三区四区香蕉| 吹落的树叶在线观看免费完整版国语| 我是奸相他哥| ,国产精品久久久久久久福利| 手机在线看片欧美亚洲| 白嫩的18sex少妇HD| 欧美AⅤ永久无码精品三区在线 | 67194熟妇在线播放直接进入| 亚洲另类专区欧美制服| 狠狠色噜噜狠狠狠狠色综合网| 成人级情欲片在线观看免费HD| 女律师的堕落hd高清中文| 啊灬用力啊老师灬啊别停| 伽罗太华被×哭还流白色液体| 欧美伦免费观看| 色欲AV综合AV在线AV| 亚洲视频1| 瑶瑶娇妻与公h喂奶| 18videoseⅹ性欧美69| 色一情一级一片| 男人边吃奶边弄进去视频| 五个姿势夹到男人爽到叫| 成人免费视频??国产免费麻豆 | 亚洲色图日本| 玩弄小妾的高H肉辣文| 大陆女警被强bd| 偷吃民工的大(男同)| 伊人久久久久久久久| 美女上部隐私免费视频| 免费婬乱AAA大片18禁视频| 性,国产三级在线| 纲手裸乳被爆白浆| 婷婷午夜精品久久久久久性色AV| 91丨牛牛丨国产人妻??| 男生淦女生| 国产欧美日韩另类va在线| 天天噜噜日日噜噜久久综合网| 亚洲一级特黄特黄的大片|