<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          silly高并發(fā)服務(wù)器框架

          聯(lián)合創(chuàng)作 · 2023-09-29 12:26

          silly 是一個(gè)以 Lua 語言開發(fā)為主的高并發(fā)服務(wù)器框架,也是一個(gè)輕量的、極簡(jiǎn)的服務(wù)器程序框架。

          silly 底層采用 C 和 Lua 語言混合開發(fā),而上層業(yè)務(wù)邏輯開發(fā)則以 Lua 語言開發(fā)為主。

          silly 工作于傳統(tǒng)的單進(jìn)程單線程模型。主要解決 socket 連接管理及異步調(diào)用帶來的麻煩(callback hell)。socket 連接管理主要采用 C 代碼編寫,Lua coroutine 則被用來避免異步調(diào)用帶來的麻煩。

          silly內(nèi)部有3個(gè)線程協(xié)同工作,之所以依然說他是單進(jìn)程單線程工作模型是因?yàn)檫@3個(gè)線程之間不共享任何變量,與3個(gè)獨(dú)立的進(jìn)程沒有任何區(qū)別。這三個(gè)線程分別管理worker, socket, timer.

          worker線程工作在lua虛擬機(jī)之上,主要負(fù)責(zé)處理socket/timer產(chǎn)生的事件,因此所有的邏輯代碼都是通過worker線程執(zhí)行的。worker模塊在接收到事件后會(huì)立即將其轉(zhuǎn)換到lua層,然后再調(diào)用邏輯代碼進(jìn)行處理。

          socket線程在epoll/kevent上的基礎(chǔ)上做了一層薄薄的封裝,主要用于高效的將socket數(shù)據(jù)、關(guān)閉、連接等事件發(fā)送到worker線程進(jìn)行處理。默認(rèn)socket最大只能管理65535個(gè)連接,可以通過silly_socket.c文件中的宏MAX_SOCKET_COUNT來控制最大socket連接數(shù)的限制。另外,socket對(duì)epoll/kevent進(jìn)行了封裝,由socket_poll.h統(tǒng)一管理。只要符合socket_poll.h對(duì)接口的定義,可以輕松為silly換成任何需要的socket IO模型。

          timer線程是一個(gè)高分辨率低精度定時(shí)器,其默認(rèn)分辨率為10ms,可以通過修改silly_timer.c中的宏RESOLUTION來控制timer中的分辨率,但是最低不得低于1ms.

          silly提了一部分特性的測(cè)試代碼,運(yùn)行./silly test/test會(huì)自動(dòng)運(yùn)行所有模塊的測(cè)試。這些代碼都極其簡(jiǎn)單并且都可以獨(dú)立運(yùn)行, 簡(jiǎn)單修改一個(gè)啟動(dòng)配置文件即可單獨(dú)運(yùn)行。

          因此運(yùn)行一下測(cè)試代碼應(yīng)該是一個(gè)不錯(cuò)的開始。

          瀏覽 34
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日日艹自拍 | 六月丁香激情 | A黄色片 爆操嫩逼 | 成人网站在线浏览 | 免费看18禁网站 |