aio,epoll,libevent,boost::asio解決的問題

來源:互聯網
上載者:User

這幾天一直在做linux大批量資料的解決方案,不斷的深入瞭解了一下aio,epoll,libevent,boost::asio。以前只知道他們都是做非同步/非阻塞的,但是具體解決的問題的關鍵點是什麼,通過這幾天的深入瞭解,把他們總結一下:

aio是linux2.6以後核心實現的非同步IO,或者說他才是真正意義上的非同步IO。

epoll作為select的linux的替代品,解決了selectfd_set的限制。效能優於select。而在mac
os x平台上替代方案是kqueue。

libevent是一個跨平台非同步解決方案,他根據不同的平台提供了不同的非同步方案,採用Reactor模型實現。

Boost::asio是一個跨平台的網路及底層IO的C++編程庫,實現了對TCP、UDP、ICMP、串口的支援。對於讀寫方式,ASIO支援同步和非同步兩種方式。採用了epoll來實現,插入了大量的訊號處理。Asio庫不需要單獨便於,但是測試過程中對boost::system的依賴可能會需要編譯部分boost中的庫。

muduo採用Reactor模型實現的網路程式庫,只支援Linux
2.6.x下的並發非阻塞TCP網路編程,不跨平台,不支援udp和ipv6。輸送量方面muduo比libevent2快18%,在事件處理效率方面,muduo與libevent2總體比較接近,muduo輸送量比boost.asio高15%以上。效能方面作為解決大資料輸送量很有優勢,但是對平台和網路通訊協定支援方面是一個問題。

ACE也是很經典的網路程式庫,出自《C++網路編程》作者之手,設計精妙程度堪稱一流,支援協議範圍也很廣,但是使用複雜度和學習複雜度較高,一直有“學我者生,用我者死”的評價。

需要注意的是他們的定位不同,aio和epoll主要是對非同步提供解決方案不是網路程式庫不提供網路支援,而libevent也是主要解決IO的問題只提供簡單的http支援,asio和muduo還有ACE一樣是高效能網路程式庫。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.