[issue12328] multiprocessing's overlapped PipeConnection on Windows
sbt
report at bugs.python.org
Thu Jun 16 16:34:22 CEST 2011
sbt <shibturn at gmail.com> added the comment:
> Hmm, it seems to me that it should be done in _poll() instead.
> Otherwise, recv() will not be interruptible, will it?
Or maybe WaitForMultipleObjects() should be changed to also wait on sigint_event if called by the main thread.
> Also, after looking at this again, it seems sigint_event would be
> better provided (at the C level) by the Python core, e.g. as
> _PyOS_SigintEvent. The time module already uses a similar mechanism.
> By setting the event in the sigint handler itself, rather than in an
> auxiliary HandlerRoutine callback function, it should also ensure
> that, when the event is set, the "tripped" bit in signalmodule.c
> has been set, meaning we wouldn't need to Sleep() anymore.
> (I also wonder why the event isn't auto-reset. Otherwise, there's a
> race condition - which is probably harmless in most cases, but still.)
If it is an auto-reset event then we must worry about a non-main thread stealing the event. Maybe _PyOS_SigintEvent() should return NULL if called by a non-main thread, and be documented with a loud usage warning.
----------
_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue12328>
_______________________________________
More information about the Python-bugs-list
mailing list