Linux 如果多个线程epoll在同一个套接字上等待呢?

Linux 如果多个线程epoll在同一个套接字上等待呢?,linux,multithreading,epoll,Linux,Multithreading,Epoll,如果多个线程epoll在同一个套接字上等待呢? 在我自己的实验中,它显示只有一个线程可以成功调用epoll_wait,其他线程显示无效参数错误。有人能解释一下吗?对于同一个epoll\u fd,您可以在多个线程上同时调用epoll\u wait event.events = EPOLLIN | EPOLLET | EPOLLONESHOT; 对于同一个fd,您可以在多个线程上同时等待。但epoll不像IOCP那样处理线程同步。当其中一个套接字上发生事件时,可能所有线程都来自epoll_wa

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

对于同一个epoll\u fd,您可以在多个线程上同时调用epoll\u wait

  event.events = EPOLLIN | EPOLLET | EPOLLONESHOT;

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