网络IO之select、poll、epoll

原创
2021/11/17 22:00
阅读数 67

网络编程中通常有阻塞IO和非阻塞IO,其中非阻塞IO用的最广泛,早期的Linux内核只有select,然后select存在着一些问题,如数量限制,线性扫描效率较低,到后期Linux又陆续推出了poll和epoll解决了select的所存在的问题,下面将对比select、poll、epoll的优缺点及机制。


select

1、数量限制1024,2、大量内存拷贝到内核态,3、效率:会线性扫描全部集合,导致随着数量增长呈现线性下降

 

poll

1、无数量限制,2、仍然存在内存拷贝、3、效率问题

 

epoll 
1、无数量限制,所支持的是最大打开文件的数目(/proc/sys/fs/file-max)
2、使用mmap加速内核与用户空间的消息传递
3、只有活动状态的socket才会主动调用callback

epoll工作模式:
LT水平触发:缺省工作模式
ET边缘触发:高速模式,仅当状态发生变化才获取通知

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部