]> granicus.if.org Git - python/commit
Issue #12328: Fix multiprocessing's use of overlapped I/O on Windows.
authorAntoine Pitrou <solipsis@pitrou.net>
Mon, 5 Mar 2012 18:28:37 +0000 (19:28 +0100)
committerAntoine Pitrou <solipsis@pitrou.net>
Mon, 5 Mar 2012 18:28:37 +0000 (19:28 +0100)
commitbdb1cf1ca56db25b33fb15dd91eef2cc32cd8973
tree54137f9699833726def7c803cff7c995af22cfa5
parent1e88f3faa61dbaa9ea0d2404aa8563c1eeceba54
Issue #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.
Doc/library/multiprocessing.rst
Lib/concurrent/futures/process.py
Lib/multiprocessing/connection.py
Lib/multiprocessing/queues.py
Lib/test/test_multiprocessing.py
Misc/NEWS
Modules/_multiprocessing/win32_functions.c