aio,epoll,libevent,boost::asio解决的问题

http://www.2cto.com/kf/201201/116382.html

这几天一直在做linux大批量数据的解决方案,不断的深入了解了一下aio,epoll,libevent,boost::asio。以前只知道他们都是做异步/非阻塞的,但是具体解决的问题的关键点是什么,通过这几天的深入了解,把他们总结一下:
aio是linux2.6以后内核实现的异步IO,或者说他才是真正意义上的异步IO。
epoll作为select的linux的替代品,解决了selectfd_set的限制。性能优于select。而在max平台上替代方案是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一样是高性能网络库

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值