epoll ET模式下 EPOLLOUT的问题

在epoll ET模式下,有连接到来的时候通常的做法是设置事件EPOLLIN | EPOLLOUT |EPOLLET并添加到epoll中。当对端发消息时,epoll_wait会返回一个events,这个events很可能包含EPOLLIN 和 EPOLLOUT ,按照之前我的理解既然设置了ET,EPOLLOUT 应该只在不可读到可读中触发一次。

在google上搜到一个提问,原文地址:https://www.spinics.net/lists/linux-api/msg01871.html

上面讲的还是比较清楚,ET的边缘出发只是针对了epoll_wait,也就是说,当fd由不可写变为可写的时候,epoll_wait会(EPOLLOUT )触发一次,但是events并不保证只有一个事件,它保存的是当前fd的一个状态。同理,当不可读到可读,EPOLLIN会导致触发,此时events会带有fd的状态,他可写,所以events会有EPOLLIN 和EPOLLOUT 

你可能感兴趣的:(epoll ET模式下 EPOLLOUT的问题)