aio是linux2.6以后內(nèi)核實(shí)現(xiàn)的異步IO,或者說(shuō)他才是真正意義上的異步IO。
epoll作為select的linux的替代品,解決了selectfd_set的限制。性能優(yōu)于select。而在max平臺(tái)上替代方案是kqueue。
libevent是一個(gè)跨平臺(tái)異步解決方案,他根據(jù)不同的平臺(tái)提供了不同的異步方案,采用Reactor模型實(shí)現(xiàn)。
Boost::asio是一個(gè)跨平臺(tái)的網(wǎng)絡(luò)及底層IO的C++
編程庫(kù),實(shí)現(xiàn)了對(duì)TCP、UDP、ICMP、串口的支持。對(duì)于讀寫方式,ASIO支持同步和異步兩種方式。采用了epoll來(lái)實(shí)現(xiàn),插入了大量的信號(hào)處理。Asio庫(kù)不需要單獨(dú)便于,但是測(cè)試過(guò)程中對(duì)boost::system的依賴可能會(huì)需要編譯部分boost中的庫(kù)。
muduo采用Reactor模型實(shí)現(xiàn)的網(wǎng)絡(luò)庫(kù),只支持
Linux 2.6.x下的并發(fā)非阻塞TCP網(wǎng)絡(luò)編程,不跨平臺(tái),不支持udp和ipv6。吞吐量方面muduo比libevent2快18%,在事件處理效率方 面,muduo與libevent2總體比較接近,muduo吞吐量比boost.asio高15%以上。性能方面作為解決大數(shù)據(jù)吞吐量很有優(yōu)勢(shì),但是對(duì) 平臺(tái)和網(wǎng)絡(luò)協(xié)議支持方面是一個(gè)問(wèn)題。
ACE也是很經(jīng)典的網(wǎng)絡(luò)庫(kù),出自《C++網(wǎng)絡(luò)編程》作者之手,設(shè)計(jì)精妙程度堪稱一流,支持協(xié)議范圍也很廣,但是使用復(fù)雜度和學(xué)習(xí)復(fù)雜度較高,一直有“學(xué)我者生,用我者死”的評(píng)價(jià)。
需要注意的是他們的定位不同,aio和epoll主要是對(duì)異步提供解決方案不是網(wǎng)絡(luò)庫(kù)不提供網(wǎng)絡(luò)支持,而libevent也是主要解決IO的問(wèn)題只提供簡(jiǎn)單的http支持,asio和muduo還有ACE一樣是高性能網(wǎng)絡(luò)庫(kù)。
posted on 2012-11-09 15:56
小果子 閱讀(2075)
評(píng)論(0) 編輯 收藏 引用 所屬分類:
學(xué)習(xí)筆記 、
開源 、
C++