在epoll期间,管道的状态不会改变,但自上次读取以来已经发生了变化。处理B会再次醒来吗?
发布于 2014-03-18 08:43:26
我对FAQ (Q9)在http://linux.die.net/man/4/epoll中的理解是,您将在步骤6中得到另一个事件(假设您可以保证步骤5确实在步骤4之后发生,而管道在步骤4之后是空的)。
尽管如此,您可能会得到比保证更多的事件(但您只需要小心地依赖于文档化的行为)--参见http://cmeerw.org/blog/753.html#753和http://cmeerw.org/blog/750.html#750。
发布于 2020-10-18 08:28:38
虽然内核确实在步骤6中醒来,但这并不是手册页所记录的内容。您提供的用例不符合应该如何使用EPOLLET。
根据文档,第6步应该是“从FD中读取”。只有在尝试阅读并获得EAGAIN之后,才能从FD中进行投票。
https://stackoverflow.com/questions/22464457
复制相似问题