1 Star 0 Fork 0

huyi / TechCPP

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
epoll哪些触发模式,有啥区别?.md 1.23 KB
一键复制 编辑 原始数据 按行查看 历史
葛昆仑 提交于 2023-11-17 11:58 . updateL 2 articles

epoll有两种触发模式:水平触发(LT)和边缘触发(ET)。

  1. 水平触发(LT):这是epoll的默认工作模式。在这种模式下,只要被监控的文件描述符还有数据可以读取或者还能写入数据,就会一直通知该事件。也就是说,如果你没有处理完所有的数据,那么每次调用epoll的时候,它都会响应这个事件。只有你读或写到了EAGAIN,也就是没有更多的数据可以处理了,那么它在下一次epoll调用的时候才不会响应。
  2. 边缘触发(ET):在这种模式下,当被监控的文件描述符状态发生变化时,epoll只会通知一次该事件,直到该文件描述符的状态再次发生变化为止。也就是说,如果你没有处理完所有的数据或没有处理该事件,那么在下一次epoll调用的时候,它不会再响应这个事件。

ET模式比LT模式效率更高,因为它避免了多次响应同一个事件,但使用ET模式需要更小心,因为如果你没有处理完所有的数据或没有处理该事件,那么可能会丢失数据。在使用ET模式时,我们通常会使用非阻塞IO,这样我们可以尽可能的读取或写入所有的数据,直到收到EAGAIN错误为止。

1
https://gitee.com/hylhm/TechCPP.git
git@gitee.com:hylhm/TechCPP.git
hylhm
TechCPP
TechCPP
master

搜索帮助

53164aa7 5694891 3bd8fe86 5694891