summaryrefslogtreecommitdiff
path: root/Lib/threading.py
diff options
context:
space:
mode:
authorCharles-François Natali <neologix@free.fr>2012-01-07 18:24:56 +0100
committerCharles-François Natali <neologix@free.fr>2012-01-07 18:24:56 +0100
commitded0348c08f298fda4426eb2a62cc3d50eed25b5 (patch)
treef762e7f1f50cce89494a53a5744ad307d0d02b2d /Lib/threading.py
parentb52e7a9a364096d355d32927c537389cfc10a5db (diff)
downloadcpython-git-ded0348c08f298fda4426eb2a62cc3d50eed25b5.tar.gz
Issue #13502: threading: Fix a race condition in Event.wait() that made it
return False when the event was set and cleared right after.
Diffstat (limited to 'Lib/threading.py')
-rw-r--r--Lib/threading.py7
1 files changed, 4 insertions, 3 deletions
diff --git a/Lib/threading.py b/Lib/threading.py
index 043e6c82af..fe92f10636 100644
--- a/Lib/threading.py
+++ b/Lib/threading.py
@@ -418,9 +418,10 @@ class _Event(_Verbose):
def wait(self, timeout=None):
self._cond.acquire()
try:
- if not self._flag:
- self._cond.wait(timeout)
- return self._flag
+ signaled = self._flag
+ if not signaled:
+ signaled = self._cond.wait(timeout)
+ return signaled
finally:
self._cond.release()