Poll与Epoll 区别总结

1.概述
网上收集了一下poll和epoll的实现原理,写下来以备后验.
2. 从api上面看,select和poll每次调用的时候需要用户自己整理该次调用关注的文件描述符和事件,内核是不会帮助用户维护前面已经关注过的记录. 而epoll是增量式的管理,每次需要告诉内核我现在关心的哪个文件描述符,内核查询以往的记录,整合起来. 打个比方就像出去购物,select和poll老板就不怎么好,每次去的时候都需要告诉老板我喜欢什么商品.而epoll老板比较好,拿个本子记录你自己的喜好记录,你只需要告诉老板我喜好的变更即可. 言归正传, select和poll 每次需要拷贝所有的文件描述符和对应事件进入内核, epoll每次只需要拷贝最新的变更进入内核. 在文件描述符多的时候得到性能提升.
3. epoll内核维护红黑树和就绪队列来完成工作.poll每次都需要去轮询设备,而epoll是向设备注册回调函数,让设备自己来完成向就绪队列上的插入工作,内核只需要判断就绪队列是否为空.
4. 参数的返回, 都需要将就绪的事件拷贝给用户空间.
5. 总结起来,主要的不同在于传递参数的方式和 轮询,回调处理就绪队列的不同.

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值