【问题标题】:What if multiple threads epoll wait on the same socket?如果多个线程 epoll 在同一个套接字上等待怎么办?
【发布时间】:2017-06-03 15:48:51
【问题描述】:

如果多个线程 epoll 在同一个套接字上等待怎么办? 在我自己的实验中,它表明只有一个线程可以成功调用 epoll_wait,其他线程显示 Invalid arguments 错误。谁能解释一下?

【问题讨论】:

    标签: linux multithreading epoll


    【解决方案1】:

    您可以为同一个 epoll_fd 在多个线程上同时调用 epoll_wait。

      event.events = EPOLLIN | EPOLLET | EPOLLONESHOT;
    

    http://www.csh.rit.edu/~rossdylan/presentations/EpollMT/

    【讨论】:

      【解决方案2】:

      您可以在多个线程上为同一个 fd 并发 epoll_wait。但是 epoll 不像 IOCP 那样处理线程同步。当某个套接字上发生事件时,所有线程都可能来自 epoll_wait 调用。通常只有一个线程就足以等待 epoll_wait。然后就可以把接收或发送数据的任务从epoll_wait线程(轮询线程)交给其他线程了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-13
        • 2023-03-19
        • 1970-01-01
        • 2015-08-23
        • 2016-08-15
        • 1970-01-01
        相关资源
        最近更新 更多