summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorBenjamin Peterson <benjamin@python.org>2015-10-06 04:56:22 (GMT)
committerBenjamin Peterson <benjamin@python.org>2015-10-06 04:56:22 (GMT)
commit15982aad2b09086b5d8819ed5dfb0ec6195fd41a (patch)
tree7a86e21a0cc6e7eecf9a7d26fba3c64b696769e5 /Lib
parent601953b67958572162d0ab7d3f24c07340ad9dbb (diff)
downloadcpython-15982aad2b09086b5d8819ed5dfb0ec6195fd41a.zip
cpython-15982aad2b09086b5d8819ed5dfb0ec6195fd41a.tar.gz
cpython-15982aad2b09086b5d8819ed5dfb0ec6195fd41a.tar.bz2
reinitialize an Event's Condition with a regular lock (closes #25319)
Diffstat (limited to 'Lib')
-rw-r--r--Lib/test/lock_tests.py8
-rw-r--r--Lib/threading.py2
2 files changed, 9 insertions, 1 deletions
diff --git a/Lib/test/lock_tests.py b/Lib/test/lock_tests.py
index 42a7d82..462ecef 100644
--- a/Lib/test/lock_tests.py
+++ b/Lib/test/lock_tests.py
@@ -388,6 +388,14 @@ class EventTests(BaseTestCase):
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
index 37aa3b8..80f809c 100644
--- a/Lib/threading.py
+++ b/Lib/threading.py
@@ -496,7 +496,7 @@ class Event:
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."""