如果多个线程epoll在同一个套接字上等待怎么办?

时间:2017-01-19 03:51:56

标签: linux multithreading epoll

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

2 个答案:

答案 0 :(得分:0)

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

  event.events = EPOLLIN | EPOLLET | EPOLLONESHOT;

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

答案 1 :(得分:0)

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