2

有谁知道我是否可以安全地从另一个线程调用 epoll.register ?

这是我的想象:

  • 线程 1:epoll.poll()
  • 线程 2:使用 epoll.register 向同一个 epoll 对象添加一些 fd

http://docs.python.org/library/select.html

4

1 回答 1

1

在您更改问题后,我更改了答案。

不是“线程安全的”,因为每个线程都会影响同一个 epoll 对象。向 epoll 对象注册一个新的 fd 仍然会对该对象进行。

该特定对象没有理由在不同的线程之间具有不同的状态,因为在这种情况下,应该为每个线程创建一个对象。

所以,简短的回答:您的设置将起作用。

事实上,python stdlib http.server 包使用相同的方法(只是使用 poll 而不是 epoll)。它在一个线程中创建一个轮询对象,并使用一个单独的线程对其进行轮询。

于 2009-12-27T03:55:32.277 回答