selelct 、poll 、epoll 对比

以下内容均为本人学习笔记,若有不当,欢迎指出

在前面学习了解的 select 、 polll 、epoll 编程模型
【select】 【poll】【epoll】【LT ET】

表1 对比selelct 、poll、epoll

IO模型selectpollepoll
fd数量
支持的文件描述符数量受限于fd_set大小取决于用户分配pollfd结构体数组的大小取决于用户分配epoll_event结构体数组的大小
拷贝开销
传参时拷贝开销每次都需要将fd集合从用户态拷贝到内核态每次都需要将pollfd结构体从用户态拷贝到内核态调用epoll_wait时需要将就绪事件从内核拷贝到用户态
遍历 不要
是否需要遍历文件描述符集合来获取就绪文件描述符内核监听时和用户准备读写时都需要遍历fd集合来获取文件描述符内核监听时和用户准备读写时都需要遍历pollfd结构体数组来获取文件描述符因为返回的epoll_event结构体数组中都是就绪的事件,不用全部遍历一边,只遍历有效个
接口 复杂不明确 明确 方便明确
调用的接口是否明确简单1.因为fd_set既做输入参数又输出参数,每次会破坏输入参数,需要自己维护一个第三方变量保存输入参数
2.参数太多
pollfd结构里面有events(输入的集合) 和revents(输出的集合)1.将其拆分为3个接口
2.事先告诉内核要监听哪些文件及什么类型的事件
3.epoll_wait以O(1)时间复杂度监视文件描述符
等待时间 精确 不精确 不精确
等待时间结构timeval(微妙级别)int 类型int 类型

完。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值