另一个线程在等待 epoll 描述符时,我能否向 epoll 描述符添加套接字?

3

我有几个线程,其中一个线程循环调用epoll_wait,其他线程可以打开需要由第一个线程epoll的连接。是否可以在另一个线程在epoll_wait等待时使用epoll_ctl添加新的套接字?

以下是可能发生的情况:

  1. 线程1调用epoll_wait
  2. 线程2创建一个套接字(A),并使用epoll_ctl将其添加到epoll实例中。
  3. 某人发送一些数据,套接字A已准备好进行读取调用。

epoll_wait会返回套接字A吗?

1个回答

5
是的,它可以。epoll套接字的全部目的就是避免重复努力。不涉及快照或使用多个等待队列。
底层中,epoll套接字有自己的等待队列。当你在epoll套接字上阻塞时,你会被添加到那个单一的等待队列。没有保存状态或类似的东西。状态在epoll套接字本身中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接