gpt4 book ai didi

linux - 嵌套 EPOLL FD

转载 作者:行者123 更新时间:2023-12-04 16:02:30 25 4
gpt4 key购买 nike

我在网上找到的有关嵌套 FD 行为的信息非常有限。

假设 EPOLL FD1 在 EPOLL FD2 和 FD3 之间共享。那么如果epoll FD1得到一个事件会发生什么

  1. 如果在没有 epoll_exclusive 标志的情况下添加它,是否会同时向 FD2 和 Fd3 引发事件。
  2. 获取事件后,是否需要在 FD1 上执行 epoll_wait 来清除事件。

以及嵌套epoll fd的用例是什么。

最佳答案

对于级别触发的情况,它非常简单:

  1. 是的,您可以将 epoll(7) 联机帮助页中问答部分的问题 2 和问题 3 的答案结合起来:
    A2:如果相同的文件描述符被添加到两个 epoll 实例中,事件将被报告给它们。
    A3: 如果一个 epoll 文件描述符有事件等待,那么它会表明是可读的。
  2. 不,因为清除事件只与边沿触发的 epoll 相关。

对于边缘触发的情况,我们希望 1 的答案保持不变,因为无论嵌套如何,如果将相同的 FD 与 EPOLLET 添加到两个 epoll 实例,它们都会报告每个事件一次。

我不知道第二个问题的答案应该是什么,但这并不重要。在 edge-triggerd 模式下添加 epoll FD 时有一个错误,它们总是表现得像 level-triggered,FD2 和 FD3 将继续显示 FD1 是可读的,只要它有未决事件。你可以看到这个线程关于修复它的尝试,我认为大陆还没有: fs/epoll: fix the edge-triggered mode for nested epoll
哪个链接到这个 GitHub repo它测试了许多您可能会感兴趣的不同场景。

关于linux - 嵌套 EPOLL FD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50094522/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com