水平触发(level-trggered)
边缘触发(edge-triggered)
边缘触发(edge-triggered)
水平触发是只要读缓冲区有数据,就会一直触发可读信号,而边缘触发仅仅在空变为非空的时候通知一次,
所以边缘触发需要一次性的把缓冲区的数据读完为止,也就是一直读,直到读到 EGAIN(EGAIN 说明缓冲区已经空了)为止,因为这一点,边缘触发需要设置文件句柄为非阻塞。
EAGAIN Resource temporarily unavailable (may be the same value as EWOULDBLOCK) (POSIX.1-2001).
非阻塞模式就是读写函数会立即获取当前数据后返回,而不会等数据的到来。
边缘触发效率更高,但是要求读取数据时使用非阻塞的方式一直把数据读完
epoll 支持水平出发和边缘触发 select 只支持水平触发