认识epoll模型的两种工作方式 以及 ET模式必须设为非阻塞的原因

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

epoll有两种工作方式,一种是LT模式(level trigger,水平触发),一种是ET模式(edge trigger,边缘触发)。默认情况下是LT模式。


目录

1、认识epoll模型的工作方式

(1) LT模式

(2) ET模式

2、ET模式必须将文件描述符设为非阻塞的原因

(1) 情景介绍

(2) 原因分析

(3) 解决方案(设为非阻塞的方法)

3、使用ET模式的两个要求

4、总结


1、认识epoll模型的工作方式

(1) LT模式

以读事件为例,当缓冲区有数据准备好的时候,此时会触发读事件,如果我们一直不去读取缓冲区里的数据,epoll模型就会一直通知我们有事件就绪,即epoll_wait中的events参数就会一直包含某个文件描述符的读事件。

这就是LT模式,也是epoll模型的默认模式。

(2) ET模式

ET模式与LT模式相反,当缓冲区就数据准备好的时候,也会触发读事件,但是只会触发一次,如果我们这次没有调用read/recv读取 或者 没有一次读完,后面就不会通知有读事件就绪了。简单来说,只有当缓冲区里的数据量发生变化的时候,才会通知我们一次,不会像LT模式那样一直通知。

这就是ET模式,单纯的从通知效率这个角度来看,ET模式的效率更高,因为不会重复通知某一个事件就绪。

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值