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 

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容