代码之家  ›  专栏  ›  技术社区  ›  Unknown

python epoll.register线程安全?

  •  2
  • Unknown  · 技术社区  · 16 年前

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

    以下是我的想象:

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

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

    1 回复  |  直到 16 年前
        1
  •  1
  •   Tor Valamo    16 年前

    你换了问题后我改了答案。

    本遗嘱 “线程安全”,因为每个线程都会影响同一个epoll对象。向epoll对象注册一个新的fd仍然会对该对象执行该操作。

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

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

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