我在网上发现有关嵌套FD行为的信息非常有限。
假设EPOLL FD1在EPOLL FD2和FD3之间共享。那么如果epoll FD1获得一个事件会发生什么
嵌套epoll FD的用例是什么?
答案 0 :(得分:0)
对于级别触发的情况,这非常简单:
对于边缘触发的情况,我们希望对1的答案保持不变,因为无论嵌套如何,如果在两个epoll实例中添加EPOLLET
相同的FD,它们都会报告一次每个事件
我不知道第二个问题应该的答案是什么,但这并不重要。在边缘触发模式下添加epoll FD时存在一个错误,它们总是始终像级别触发一样,FD2和FD3会继续显示FD1,只要它有未决事件即可读取。
您可以看到有关尝试修复它的线程,我认为这还没有解决到大陆:
fs/epoll: fix the edge-triggered mode for nested epoll
链接到此GitHub repo的网站,该网站测试了很多您可能会感兴趣的场景。