reinitialize an Event's Condition with a regular lock (closes #25319)

This commit is contained in:
Benjamin Peterson 2015-10-05 21:56:22 -07:00
parent 601953b679
commit 15982aad2b
4 changed files with 13 additions and 1 deletions

View file

@ -388,6 +388,14 @@ class EventTests(BaseTestCase):
b.wait_for_finished() b.wait_for_finished()
self.assertEqual(results, [True] * N) 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): class ConditionTests(BaseTestCase):
""" """

View file

@ -496,7 +496,7 @@ class Event:
def _reset_internal_locks(self): def _reset_internal_locks(self):
# private! called by Thread._reset_internal_locks by _after_fork() # private! called by Thread._reset_internal_locks by _after_fork()
self._cond.__init__() self._cond.__init__(Lock())
def is_set(self): def is_set(self):
"""Return true if and only if the internal flag is true.""" """Return true if and only if the internal flag is true."""

View file

@ -1315,6 +1315,7 @@ Ryan Smith-Roberts
Rafal Smotrzyk Rafal Smotrzyk
Eric Snow Eric Snow
Dirk Soede Dirk Soede
Nir Soffer
Paul Sokolovsky Paul Sokolovsky
Evgeny Sologubov Evgeny Sologubov
Cody Somerville Cody Somerville

View file

@ -100,6 +100,9 @@ Library
submit a coroutine to a loop from another thread, returning a submit a coroutine to a loop from another thread, returning a
concurrent.futures.Future. By Vincent Michel. 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 - Issue #25232: Fix CGIRequestHandler to split the query from the URL at the
first question mark (?) rather than the last. Patch from Xiang Zhang. first question mark (?) rather than the last. Patch from Xiang Zhang.