epoll的边缘触发和水平触发

epoll的边缘触发和水平触发

epoll 是 Linux 下用于处理大量文件描述符的高效 I/O 多路复用机制。在 epoll 中,有两种触发模式:水平触发(Level-Triggered,简称 LT)和边缘触发(Edge-Triggered,简称 ET)。

  1. 水平触发(LT,Level-Triggered)
    • 当文件描述符就绪时,epoll_wait 将立即返回。
    • 如果文件描述符的状态发生变化,epoll_wait 会再次通知应用程序。
    • 这种模式下,如果文件描述符有数据可读或可写,epoll_wait 将不停地返回通知,直到应用程序处理完数据或者阻塞。
  2. 边缘触发(ET,Edge-Triggered)
    • 当文件描述符就绪时,epoll_wait 只会通知一次,直到应用程序处理完数据并清空了文件描述符的缓冲区。
    • 如果文件描述符的状态没有变化,epoll_wait 不会重复通知应用程序。
    • 这种模式下,应用程序需要注意,在一个事件通知之后,要一直读或写,直到发生 EAGAINEWOULDBLOCK 错误。

为什么epoll这里要叫做边缘触发和水平触发呢?

这源于通信数字信号处理领域的术语,边缘和水平通常用于描述信号的特性

  1. 边缘触发(Edge-Triggered)
    • "边缘" 指的是信号的变化边缘,即信号从一个状态变为另一个状态的瞬间。
    • 在数字信号处理中,边缘通常用来表示信号的上升沿或下降沿,即信号从低电平到高电平或从高电平到低电平的瞬间。
  2. 水平触发(Level-Triggered)
    • "水平" 指的是信号的水平状态,即信号所处的电平状态。
    • 在数字信号处理中,水平触发通常用来描述信号保持在某个电平的状态,而不关心信号的变化瞬间。

92310.png

1 Reference

https://electronics.stackexchange.com/a/21891


本站总访问量次 本站访客数人次 本文总阅读量