reinitialize an Event's Condition with a regular lock (closes #25319)
diff --git a/Lib/test/lock_tests.py b/Lib/test/lock_tests.py
index 2ff75c4..efc464f 100644
--- a/Lib/test/lock_tests.py
+++ b/Lib/test/lock_tests.py
@@ -305,6 +305,14 @@
for r, dt in results2:
self.assertTrue(r)
+ def test_reset_internal_locks(self):
+ evt = self.eventtype()
+ old_lock = evt._Event__cond._Condition__lock
+ evt._reset_internal_locks()
+ new_lock = evt._Event__cond._Condition__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 27a5511..51205fa 100644
--- a/Lib/threading.py
+++ b/Lib/threading.py
@@ -565,7 +565,7 @@
def _reset_internal_locks(self):
# private! called by Thread._reset_internal_locks by _after_fork()
- self.__cond.__init__()
+ self.__cond.__init__(Lock())
def isSet(self):
'Return true if and only if the internal flag is true.'