如果多个线程epoll在同一个套接字上等待怎么办? 在我自己的实验中,它表明只有一个线程可以成功调用epoll_wait,其他线程显示无效参数错误。有人可以解释一下吗?
答案 0 :(得分:0)
您可以在同一个epoll_fd的多个线程上同时调用epoll_wait。
event.events = EPOLLIN | EPOLLET | EPOLLONESHOT;
答案 1 :(得分:0)
您可以在同一个fd的多个线程上同时执行epoll_wait。但epoll不像IOCP那样处理线程同步。当其中一个套接字发生事件时,所有线程都可能来自epoll_wait调用。通常只有一个线程足以等待epoll_wait。然后,您可以从epoll_wait线程(轮询线程)向其他线程发送接收或发送数据的任务。