epoll有两种工作方式,一种是LT模式(level trigger,水平触发),一种是ET模式(edge trigger,边缘触发)。默认情况下是LT模式。
目录
1、认识epoll模型的工作方式
(1) LT模式
以读事件为例,当缓冲区有数据准备好的时候,此时会触发读事件,如果我们一直不去读取缓冲区里的数据,epoll模型就会一直通知我们有事件就绪,即epoll_wait中的events参数就会一直包含某个文件描述符的读事件。
这就是LT模式,也是epoll模型的默认模式。
(2) ET模式
ET模式与LT模式相反,当缓冲区就数据准备好的时候,也会触发读事件,但是只会触发一次,如果我们这次没有调用read/recv读取 或者 没有一次读完,后面就不会通知有读事件就绪了。简单来说,只有当缓冲区里的数据量发生变化的时候,才会通知我们一次,不会像LT模式那样一直通知。
这就是ET模式,单纯的从通知效率这个角度来看,ET模式的效率更高,因为不会重复通知某一个事件就绪。

本文详细介绍了epoll的两种工作模式:LT(水平触发)和ET(边缘触发),并探讨了ET模式下为何必须将文件描述符设为非阻塞的原因。同时,文章还列举了使用ET模式的两个具体要求。
最低0.47元/天 解锁文章

1231





