我有一个服务器 fd,以及多个线程,每个线程中都有 epoll 事件循环(不同的 epoll_fd)。如果我将此 fd 添加到每个事件循环中,是否安全?如果有新客户端出现,是否只有其中一个会收到通知?
答案1
如果我将此 fd 添加到每个事件循环中,是否安全?
它是安全的,因为它epoll
不会崩溃,也不会报错。您的代码是否可以正确处理它尚不得而知。
如果有新客户出现,是否确实只有其中一个会收到通知?
我不会指望这一点。更可能的是,所有线程都收到通知,但只有一个线程能够处理该事件 - 其他线程可能只是阻塞accept
(除非套接字设置为非阻塞)。