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/