当前位置:新励学网 > 秒知问答 > epoll原理

epoll原理

发表时间:2024-07-23 12:45:03 来源:网友投稿

在epoll文件系统建立file节点,并开辟epoll自己的内核高速cache区,建立红黑树,分配

好想要的size的内存对象,建立一个list链表,用于存储准备就绪的事件。

把要监听的socket放到对应红黑树上,给内核中断处理程序注册一个回调函数,通知内核,如果这个句柄的数据到了,就把它放到就绪列表

扩展资料

epoll是一种IO多路转接技术,在LINUX网络编程中,经常用来做事件触发,即当有特定事件到来时,能够检测到,而不必阻塞进行监听。

epoll有两种工作方式,ET-水平触发 和 LT-边缘触发(默认工作方式),主要的区别是:

LT,内核通知你fd是否就绪,如果没有处理,则会持续通知。而ET,内核只通知一次。

epoll的优点

与select相比,epoll有以下优点:

2.1. 支持进程打开大量数目的socket描述符,select支持的进程描述符由FD_SETSIZE设置,默认值为

1024,而epoll不受这个限制。

2.2. epoll的效率,不随监听的socket数目增加而线性下降。

select采用轮询的方式,对socket集合的描述符表进行扫描,如果socket数量过大,并且大多数

socket属于idle状态,select的扫描就做了很多无用功。

epoll只会对活跃的socket进行操作,所以在socket数量比较大,而绝大多数socket属于idle

状态时epoll的效率会远胜于select。如果绝大多数socket是活跃的,由于epoll_ctl的影响,

epoll的效率会稍微比select差。

免责声明:本站发布的教育资讯(图片、视频和文字)以本站原创、转载和分享为主,文章观点不代表本网站立场。

如果本文侵犯了您的权益,请联系底部站长邮箱进行举报反馈,一经查实,我们将在第一时间处理,感谢您对本站的关注!