Currently, IocpProactor.connect_pipe() is implemented with QueueUserWorkItem() which starts a thread that cannot be interrupted. Because of that, this function requires special cases in _register() and close() methods of IocpProactor.
While fixing the issue #23095, I saw that IocpProactor.connect_pipe() causes "GetQueuedCompletionStatus() returned an unexpected event" messages to be logged, but also to hang the test suite.
I propose a solution to reimplement IocpProactor.connect_pipe() without a thread:
https://code.google.com/p/tulip/issues/detail?id=197
It should fix this issue. |