[Python-checkins] cpython (3.4): reinitialize an Event's Condition with a regular lock (closes #25319)

benjamin.peterson python-checkins at python.org
Tue Oct 6 01:01:37 EDT 2015


https://hg.python.org/cpython/rev/6108d30dde21
changeset: 98549:6108d30dde21
branch: 3.4
parent: 98544:54c77fdcdb2e
user: Benjamin Peterson <benjamin at python.org>
date: Mon Oct 05 21:56:22 2015 -0700
summary:
 reinitialize an Event's Condition with a regular lock (closes #25319)
files:
 Lib/test/lock_tests.py | 8 ++++++++
 Lib/threading.py | 2 +-
 Misc/ACKS | 1 +
 Misc/NEWS | 3 +++
 4 files changed, 13 insertions(+), 1 deletions(-)
diff --git a/Lib/test/lock_tests.py b/Lib/test/lock_tests.py
--- a/Lib/test/lock_tests.py
+++ b/Lib/test/lock_tests.py
@@ -388,6 +388,14 @@
 b.wait_for_finished()
 self.assertEqual(results, [True] * N)
 
+ def test_reset_internal_locks(self):
+ evt = self.eventtype()
+ old_lock = evt._cond._lock
+ evt._reset_internal_locks()
+ new_lock = evt._cond._lock
+ self.assertIsNot(new_lock, old_lock)
+ self.assertIs(type(new_lock), type(old_lock))
+
 
 class ConditionTests(BaseTestCase):
 """
diff --git a/Lib/threading.py b/Lib/threading.py
--- a/Lib/threading.py
+++ b/Lib/threading.py
@@ -496,7 +496,7 @@
 
 def _reset_internal_locks(self):
 # private! called by Thread._reset_internal_locks by _after_fork()
- self._cond.__init__()
+ self._cond.__init__(Lock())
 
 def is_set(self):
 """Return true if and only if the internal flag is true."""
diff --git a/Misc/ACKS b/Misc/ACKS
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -1315,6 +1315,7 @@
 Rafal Smotrzyk
 Eric Snow
 Dirk Soede
+Nir Soffer
 Paul Sokolovsky
 Evgeny Sologubov
 Cody Somerville
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -100,6 +100,9 @@
 submit a coroutine to a loop from another thread, returning a
 concurrent.futures.Future. By Vincent Michel.
 
+- Issue #25319: When threading.Event is reinitialized, the underlying condition
+ should use a regular lock rather than a recursive lock.
+
 - Issue #25232: Fix CGIRequestHandler to split the query from the URL at the
 first question mark (?) rather than the last. Patch from Xiang Zhang.
 
-- 
Repository URL: https://hg.python.org/cpython


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /