Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
epoll中有两个功能:
当我使用相同的 epoll_fd 时 它们是线程安全的吗?如果一个线程调用 epoll_wait 而其他线程同时调用 epoll_ctl 会发生什么?
它是线程安全的,但没有太多文档明确说明这一点。看这里
顺便说一句,您也可以让多个线程在单个 上等待epoll_fd,但在这种情况下可能会有点棘手。(即您可能想使用边沿触发EPOLLET或单次模式EPOLLONESHOT。请参见此处。)
epoll_fd
EPOLLET
EPOLLONESHOT
注意:现有接受的答案是正确的,但它提到“没有多少文档明确说明”,而 epoll 文档确实说明了这一点。
手册页明确允许epoll_wait在另一个线程中等待时将文件描述符添加到 epoll 集中:
epoll_wait
“注释”部分:
当一个线程在对epoll_wait()的调用中被阻塞时,另一个线程可以将文件描述符添加到等待的epoll 实例中。如果新的文件描述符准备就绪,它将导致 epoll_wait()调用解除阻塞。