- 水平触发(level-triggered)
- socket接收缓冲区不为空 有数据可读 读事件一直触发
- socket发送缓冲区不满 可以继续写入数据 写事件一直触发
- 边沿触发(edge-triggered)
- socket的接收缓冲区状态变化时触发读事件,即空的接收缓冲区刚接收到数据时触发读事件
- socket的发送缓冲区状态变化时触发写事件,即满的缓冲区刚空出空间时触发读事件
我理解的就是:
水平触发:不断查询是否有可用的文件描述符,有的话,内核触发事件,如果数据没有处理完,内核接着触发事件(有数据就触发)
边缘触发:只有当I/O状态改变时,才触发事件,每次触发一次性把数据全部处理完,因为下一次处理要等I/O状态再次改变才可以(触发就全部处理完数据)
总结边沿触发仅触发一次,水平触发会一直触发。