Python epoll.register线程安全?

时间:2009-12-27 03:48:31

标签: python multithreading epoll

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

这是我想象的:

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

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

1 个答案:

答案 0 :(得分:1)

我在更改问题后改变了答案。

这将是“线程安全的”,因为每个线程都会影响同一个epoll对象。将新的fd注册到epoll对象仍然会对该对象执行此操作。

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

所以,简短回答:你的设置会有效。

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