【问题标题】:Can a single Epoll fd be used to watch events on different types of sockets?可以使用单个 Epoll fd 来监视不同类型套接字上的事件吗?
【发布时间】:2012-06-09 12:43:16
【问题描述】:

我一直在构建一个多线程服务器,每个线程都有一个 epoll fd 来管理传入的 tcp 连接。 对于线程间通信,我使用了 unix 域套接字,目的是利用现有的每线程 epoll。

但是,如果还添加了 unix 域套接字,Epoll 似乎停止返回网络套接字事件。

我的问题是可以使用一个 Epoll 实例来跟踪 tcp 套接字和 unix 域套接字上的事件吗?这是预期的行为吗?我没有看到任何文献表明这一点。还是我需要一个单独的 Epoll 实例来跟踪这两种不同类型的套接字?

【问题讨论】:

  • 恕我直言,any 文件描述符可以被选择、轮询或 epolled。对于磁盘文件,这是相当无用的(它们总是选择可读+可写)。但是 network 套接字和 unix-domain 套接字在 select/poll/epoll 中是等价的。

标签: c linux


【解决方案1】:

epoll、poll 和 select 旨在监控多个文件描述符。它不限制在任何时候只监视一个文件/套接字描述符实例。

是否可以使用一个 Epoll 实例来跟踪 tcp 套接字和 unix 域套接字上的事件? 是的,使用 epoll 没有具体限制。

Could you recommend some guides about Epoll on Linux查看示例 epoll 程序

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-16
    • 2013-05-15
    • 2012-12-07
    • 2016-09-01
    • 2017-06-09
    • 2016-05-25
    • 1970-01-01
    • 2014-11-12
    相关资源
    最近更新 更多