日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

主流服务器框架总结

發(fā)布時間:2024/8/23 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 主流服务器框架总结 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

libevent

?編輯
Libevent 是一個用C語言編寫的、輕量級的開源高性能網(wǎng)絡(luò)庫,主要有以下幾個亮點(diǎn):事件驅(qū)動( event-driven),高性能;輕量級,專注于網(wǎng)絡(luò),不如 ACE 那么臃腫龐大;源代碼相當(dāng)精煉、易讀;跨平臺,支持 Windows、 Linux、 *BSD 和 Mac Os;支持多種 I/O 多路復(fù)用技術(shù), epoll、 poll、 dev/poll、 select 和 kqueue 等;支持 I/O,定時器和信號等事件;注冊事件優(yōu)先級。 Libevent 已經(jīng)被廣泛的應(yīng)用,作為底層的網(wǎng)絡(luò)庫;比如 memcached、 Vomit、 Nylon、 Netchat等 ?ASIO Boost.ASIO 是利用當(dāng)代C++的先進(jìn)方法,跨平臺,異步I/O模型的C++網(wǎng)絡(luò)庫。已被推薦進(jìn)入TR2,這意味著它有成為C++標(biāo)準(zhǔn)庫的可能。

muduo?

muduo 是一個基于非阻塞 IO 和事件驅(qū)動的現(xiàn)代 C++ 網(wǎng)絡(luò)庫,原生支持 one loop per thread 這種 IO 模型。muduo 適合開發(fā) Linux 下的面向業(yè)務(wù)的多線程服務(wù)端網(wǎng)絡(luò)應(yīng)用程序,其中“面向業(yè)務(wù)的網(wǎng)絡(luò)編程”的定義.

最近簡單讀了下muduo的源碼,本文對其主要實(shí)現(xiàn)/結(jié)構(gòu)簡單總結(jié)下。

muduo的主要源碼位于net文件夾下,base文件夾是一些基礎(chǔ)代碼,不影響理解網(wǎng)絡(luò)部分的實(shí)現(xiàn)。muduo主要類包括:

  • EventLoop
  • Channel
  • Poller
  • TcpConnection
  • TcpClient
  • TcpServer
  • Connector
  • Acceptor
  • EventLoopThread
  • EventLoopThreadPool

其中,Poller(及其實(shí)現(xiàn)類)包裝了Poll/EPoll,封裝了OS針對設(shè)備(fd)的操作;Channel是設(shè)備fd的包裝,在muduo中主要包裝socket;TcpConnection抽象一個TCP連接,無論是客戶端還是服務(wù)器只要建立了網(wǎng)絡(luò)連接就會使用TcpConnection;TcpClient/TcpServer分別抽象TCP客戶端和服務(wù)器;Connector/Acceptor分別包裝TCP客戶端和服務(wù)器的建立連接/接受連接;EventLoop是一個主控類,是一個事件發(fā)生器,它驅(qū)動Poller產(chǎn)生/發(fā)現(xiàn)事件,然后將事件派發(fā)到Channel處理;EventLoopThread是一個帶有EventLoop的線程;EventLoopThreadPool自然是一個EventLoopThread的資源池,維護(hù)一堆EventLoopThread。

閱讀庫源碼時可以從庫的接口層著手,看看關(guān)鍵功能是如何實(shí)現(xiàn)的。對于muduo而言,可以從TcpServer/TcpClient/EventLoop/TcpConnection這幾個類著手。接下來看看主要功能的實(shí)現(xiàn):

總結(jié)

以上是生活随笔為你收集整理的主流服务器框架总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。