epoll和select

简介: epoll和select假设你在大学读书,住的宿舍楼有很多间房间,你的朋友要来找你。select版宿管大妈就会带着你的朋友挨个房间去找,直到找到你为止。

epoll和select

假设你在大学读书,住的宿舍楼有很多间房间,你的朋友要来找你。
select版宿管大妈就会带着你的朋友挨个房间去找,直到找到你为止。
而epoll版宿管大妈会先记下每位同学的房间号,
你的朋友来时,只需告诉你的朋友你住在哪个房间即可,不用亲自带着你的朋友满大楼找人。
如果来了10000个人,都要找自己住这栋楼的同学时,select版和epoll版宿管大妈,谁的效率更高,不言自明。
同理,在高并发服务器中,轮询I/O是最耗时间的操作之一,select和epoll的性能谁的性能更高,同样十分明了。

select的调用复杂度是线性的,即O(n)。举个例子,一个保姆照看一群孩子,如果把孩子是否需要尿尿比作网络IO事件,select的作用就好比这个保姆挨个询问每个孩子:你要尿尿吗?如果孩子回答是,保姆则把孩子拎出来放到另外一个地方。当所有孩子询问完之后,保姆领着这些要尿尿的孩子去上厕所(处理网络IO事件)。
还是以保姆照看一群孩子为例,在epoll机制下,保姆不再需要挨个的询问每个孩子是否需要尿尿。取而代之的是,每个孩子如果自己需要尿尿的时候,自己主动的站到事先约定好的地方,而保姆的职责就是查看事先约定好的地方是否有孩子。如果有小孩,则领着孩子去上厕所(网络事件处理)。因此,epoll的这种机制,能够高效的处理成千上万的并发连接,而且性能不会随着连接数增加而下降。

img_514f2bcd1b37d93308f3fa165b7668a2.png
这里写图片描述

select单个进程可监视的fd数量受到限制
epoll和select都可以实现同时监听多个I/O事件的状态
epoll基于轮训机制,select基于操作系统支持的I/O通知机制
epoll支持水平触发和边沿触发两种模式

目录
相关文章
浅谈select,poll和epoll的区别
云栖号资讯:【点击查看更多行业资讯】在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! select,poll和epoll其实都是操作系统中IO多路复用实现的方法。 select select方法本质其实就是维护了一个文件描述符(fd)数组,以此为基础,实现IO多路复用的功能。
浅谈select,poll和epoll的区别
|
6月前
|
网络协议 Unix C语言
I/O多路复用-select函数
I/O多路复用-select函数
|
6月前
|
Unix Linux API
select和poll的区别
select和poll的区别
|
6月前
|
存储 消息中间件 Kubernetes
多路复用I/O-select
多路复用I/O-select
64 0
|
Linux
一文搞懂select、poll和epoll区别
一文搞懂select、poll和epoll区别
822 1
一文搞懂select、poll和epoll区别
|
网络协议 Linux C语言
关于select,epoll的优缺点说明
关于select,epoll的优缺点说明
171 0
|
缓存 监控 Linux
IO多路转接——select,poll,epoll
IO多路转接——select,poll,epoll
121 0
IO多路转接——select,poll,epoll
一文搞懂select、poll和epoll区别(上)
一文搞懂select、poll和epoll区别
190 0
一文搞懂select、poll和epoll区别(上)