merge in patch from tim golden to fix contextmanager support for mp.Lock()

This commit is contained in:
Jesse Noller 2009-03-30 23:29:31 +00:00
parent d7bf8a5478
commit 82eb5902ce
4 changed files with 9 additions and 2 deletions

View file

@ -546,6 +546,10 @@ class _TestLock(BaseTestCase):
self.assertEqual(lock.release(), None) self.assertEqual(lock.release(), None)
self.assertRaises((AssertionError, RuntimeError), lock.release) self.assertRaises((AssertionError, RuntimeError), lock.release)
def test_lock_context(self):
with self.Lock():
pass
class _TestSemaphore(BaseTestCase): class _TestSemaphore(BaseTestCase):

View file

@ -256,6 +256,7 @@ Dinu Gherman
Jonathan Giddy Jonathan Giddy
Johannes Gijsbers Johannes Gijsbers
Michael Gilfix Michael Gilfix
Tim Golden
Chris Gonnerman Chris Gonnerman
David Goodger David Goodger
Hans de Graaff Hans de Graaff
@ -789,4 +790,3 @@ Siebren van der Zee
Uwe Zessin Uwe Zessin
Tarek ZiadŽ Tarek ZiadŽ
Peter Åstrand Peter Åstrand
Jesse Noller

View file

@ -199,6 +199,9 @@ Core and Builtins
Library Library
------- -------
- Issue #5261: Patch multiprocessing's semaphore.c to support context
manager use: "with multiprocessing.Lock()" works now.
- Issue #5177: Multiprocessing's SocketListener class now uses - Issue #5177: Multiprocessing's SocketListener class now uses
socket.SO_REUSEADDR on all connections so that the user no longer needs socket.SO_REUSEADDR on all connections so that the user no longer needs
to wait 120 seconds for the socket to expire. to wait 120 seconds for the socket to expire.

View file

@ -546,7 +546,7 @@ static PyMethodDef semlock_methods[] = {
"acquire the semaphore/lock"}, "acquire the semaphore/lock"},
{"release", (PyCFunction)semlock_release, METH_NOARGS, {"release", (PyCFunction)semlock_release, METH_NOARGS,
"release the semaphore/lock"}, "release the semaphore/lock"},
{"__enter__", (PyCFunction)semlock_acquire, METH_VARARGS, {"__enter__", (PyCFunction)semlock_acquire, METH_VARARGS | METH_KEYWORDS,
"enter the semaphore/lock"}, "enter the semaphore/lock"},
{"__exit__", (PyCFunction)semlock_release, METH_VARARGS, {"__exit__", (PyCFunction)semlock_release, METH_VARARGS,
"exit the semaphore/lock"}, "exit the semaphore/lock"},