当你偶尔发现语言变得无力时,
不妨安静下来,
让沉默替你发声。
--- 里则林 ---
从零开始认识多路转接
1 EPOLL优缺点
poll 的优点(和 select 的缺点对应)
- 接口使用方便:虽然拆分成了三个函数,但是逻辑清晰,使用起来更方便高效。不需要每次循环都设置关注的文件描述符,并且做到了输入输出参数分离开!
- 数据拷贝轻量:只在合适的时候调用 EPOLL_CTL_ADD 将文件描述符结构拷贝到内核中,这个操作并不频繁(而 select/poll 都是每次循环都要进行拷贝)。
- 事件回调机制:避免使用遍历, 而是使用回调函数的方式,将就绪的文件描述符结构加入到就绪队列中。epoll_wait 返回直接访问就绪队列就知道哪些文件描述符就绪。这个操作时间复杂度 O(1). 即使文件描述符数目很多,效率也不会受到影响。
- 没有数量限制:理论上,文件描述符数目是无上限。epoll的接口支持无上限的文