有没有人知道我是否可以安全地从另一个线程调用epoll.register?
这是我想象的:
答案 0 :(得分:1)
我在更改问题后改变了答案。
这将不是“线程安全的”,因为每个线程都会影响同一个epoll对象。将新的fd注册到epoll对象仍然会对该对象执行此操作。
该特定对象没有理由在不同的线程中具有不同的状态,因为在那种情况下,应该为每个线程创建一个对象。
所以,简短回答:你的设置会有效。
实际上,python stdlib http.server包使用相同的方法(只使用poll而不是epoll)。它在一个线程中创建一个轮询对象,并使用一个单独的线程来轮询它。