Issue #12328: Fix multiprocessing's use of overlapped I/O on Windows. · pythoncapi/cpython@bdb1cf1 · GitHub
Skip to content

Commit bdb1cf1

Browse files
committed
Issue python#12328: Fix multiprocessing's use of overlapped I/O on Windows.
Also, add a multiprocessing.connection.wait(rlist, timeout=None) function for polling multiple objects at once. Patch by sbt. Complete changelist from sbt's patch: * Adds a wait(rlist, timeout=None) function for polling multiple objects at once. On Unix this is just a wrapper for select(rlist, [], [], timeout=None). * Removes use of the SentinelReady exception and the sentinels argument to certain methods. concurrent.futures.process has been changed to use wait() instead of SentinelReady. * Fixes bugs concerning PipeConnection.poll() and messages of zero length. * Fixes PipeListener.accept() to call ConnectNamedPipe() with overlapped=True. * Fixes Queue.empty() and SimpleQueue.empty() so that they are threadsafe on Windows. * Now PipeConnection.poll() and wait() will not modify the pipe except possibly by consuming a zero length message. (Previously poll() could consume a partial message.) * All of multiprocesing's pipe related blocking functions/methods are now interruptible by SIGINT on Windows.
1 parent 1e88f3f commit bdb1cf1

7 files changed

Lines changed: 582 additions & 153 deletions

File tree

Doc/library/multiprocessing.rst

Lines changed: 77 additions & 5 deletions

Lib/concurrent/futures/process.py

Lines changed: 8 additions & 4 deletions

0 commit comments

Comments
 (0)