select、poll、epoll的简要对比
admin
2024-05-08 12:56:07
0

select

select的几大缺点:
(1)每次调用select,都需要把fd集合从用户态拷贝到内核态,这个开销在fd很多时会很大
(2)同时每次调用select都需要在内核遍历传递进来的所有fd,这个开销在fd很多时也很大
(3)select支持的文件描述符数量太小了,默认是1024

select 为什么是1024? —— 两个1024

1,select中存放文件描述符的数组大小FD_SETSIZE为1024

2,进程的文件描述符上限默认是1024,正是因为这个原因,select设计时才把数组大小设计为1024

poll

poll的机制与select类似,与select在本质上没有多大差别,管理多个描述符也是进行轮询,根据描述符的状态进行处理,但是poll没有最大文件描述符数量的限制。poll和select同样存在一个缺点就是,包含大量文件描述符的数组被整体复制于用户态和内核的地址空间之间,而不论这些文件描述符是否就绪,它的开销随着文件描述符数量的增加而线性增大。

epoll

(1)poll和select的增强版,event poll,更加灵活,没有描述符限制。epoll使用一个文件描述符管理多个描述符,将用户关系的文件描述符的事件存放到内核的一个事件表中,这样在用户空间和内核空间的copy只需一次。
(2)两种工作模式:LT(level trigger)和ET(edge trigger)

LT模式水平触发(默认模式):当epoll_wait检测到描述符事件发生并将此事件通知应用程序,应用程序可以不立即处理该事件。下次调用epoll_wait时,会再次响应应用程序并通知此事件。

ET模式边沿触发:当epoll_wait检测到描述符事件发生并将此事件通知应用程序,应用程序必须立即处理该事件。如果不处理,下次调用epoll_wait时,不会再次响应应用程序并通知此事件。

ET模式在很大程度上减少了epoll事件被重复触发的次数,因此效率要比LT模式高。epoll工作在ET模式的时候,必须使用非阻塞套接口,以避免由于一个文件句柄的阻塞读/阻塞写操作把处理多个文件描述符的任务饿死。

相关内容

热门资讯

A股并购重组聚焦“补链强链” 8月19日,截至8月18日,Wind数据显示,以首次披露日期为口径,今年以来A股市场超2500家上市...
A股限售股解禁一览:5.84亿... 8月19日,Wind数据显示,周三(8月19日),共有3家公司限售股解禁,合计解禁量为5980.26...
超1700亿元,吉利汽车上半年... 本报(chinatimes.net.cn)记者田野 于建平 北京报道2026年8月17日,吉利汽车控...
全资收购大苏计钼矿 国城矿业扩... 中经记者 陈家运 北京报道8月17日,国城矿业(000688.SZ)公告披露,其于当日召开2026年...
离岸人民币兑美元较周一纽约尾盘... 8月19日,离岸人民币(CNH)兑美元报6.7463元,较周一纽约尾盘跌32点,日内整体交投于6.7...
美股收评:三大指数集体收跌,闪... 8月19日,美股三大指数集体收跌,纳指跌1.33%,道指跌0.22%,标普500指数跌0.69%。闪...
暴跌25%,五折清仓无人问津!... 几年前的奢侈品市场,GUCCI绝对是人人追捧的热门选择。不管是年轻上班族,还是追求体面的中产人群,都...
伊朗外长:近期冲突表明未设美军... 8月19日,当地时间8月18日,伊朗外交部长阿拉格齐表示,近期发生的冲突表明,没有设立美军基地的国家...
N频准一签赚55万元,A股散户... N频准一签赚55万元,再次刷新A股新股首日收益的历史纪录。从今年以来,新股上市首日的平均涨幅并不低,...
美股芯片股深夜全线大跌,费城半... 北京时间8月18日,美股三大指数低开低走,截至23:18,道指跌0.18%,纳指跌1.33%,标普5...