epoll比select,poll性能更好吗

1 篇文章 0 订阅
以前一直以为epoll模型比select和poll性能更好,毕竟select和poll都是轮询,即每次调用都扫描整个文件描述符集合,将其中就绪的文件描述符返回给用户程序,因此它们检测就绪事件算法复杂度是o(n)。epoll_wait采用回调的方式,内核检测到就绪的文件描述符时,触发回调,回调将该文件描述符对应的事件插入内核就绪队列,内核最后在适当的时间将该就绪队列中的内容拷贝到用户空间。因此epoll无须轮询整个文件描述符集合来检测哪些事件就绪,其算法复杂度是o(1)。但是,当活动链接比较多的时候,epoll的效率未必比select和poll高,因为此时回调函数被触发的过于频繁。所以, epoll适用于连接数量多,但活动连接比较少的情况。当然,epoll还支持高效的ET模式,以及epolloneshot事件,该事件能进一步减少可读、可写、异常事件被触发的次数。所以,用哪种模型,需要根据业务来综合考虑。
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值