select,poll,epoll 对比

最大链接数

  • select 有上限FD_SETSIZE设置
  • poll 链表实现,没有上限
  • epoll 没有上限

fd剧增带来的io效率问题

  • select 轮询机制, o(n)复杂度
  • poll 轮询机制,o(n)复杂度
  • epoll 事件通知机制,o(1)复杂度

消息传递方式

  • select 完整拷贝
  • poll 完整拷贝
  • epoll 通过内核与用户空间共享内存来实现

工作方式

  • select LT
  • poll LT
  • epoll LT水平触发,ET边缘触发

LT

  • 读缓存区不为空,就会一直触发可读事件
  • 写缓冲区不满,触发可写事件

ET

  • 读缓存区由空转为非空,触发可读事件
  • 写缓存区由满转为不满,触发可写事件

select,poll,epoll 对比
https://huahua132.github.io/2023/05/14/socket/epoll/
作者
huahua132
发布于
2023年5月14日
许可协议