From ef660e8e50c607c8abcb02274decdcb6eff1d1b8 Mon Sep 17 00:00:00 2001 From: Georg Brandl Date: Tue, 31 Mar 2009 20:41:08 +0000 Subject: [PATCH] #1674032: return value of flag from Event.wait(). OKed by Guido. --- Doc/library/threading.rst | 12 +++++++++--- Lib/test/test_threading.py | 3 ++- Lib/threading.py | 1 + 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/Doc/library/threading.rst b/Doc/library/threading.rst index 69593ae7b1f..efd0cff7c34 100644 --- a/Doc/library/threading.rst +++ b/Doc/library/threading.rst @@ -696,14 +696,20 @@ An event object manages an internal flag that can be set to true with the .. method:: Event.wait([timeout]) - Block until the internal flag is true. If the internal flag is true on entry, - return immediately. Otherwise, block until another thread calls :meth:`set` to - set the flag to true, or until the optional timeout occurs. + Block until the internal flag is true. If the internal flag is true on entry, + return immediately. Otherwise, block until another thread calls :meth:`set` + to set the flag to true, or until the optional timeout occurs. When the timeout argument is present and not ``None``, it should be a floating point number specifying a timeout for the operation in seconds (or fractions thereof). + This method returns the internal flag on exit, so it will always return + ``True`` except if a timeout is given and the operation times out. + + .. versionchanged:: 2.7 + Previously, the method always returned ``None``. + .. _timer-objects: diff --git a/Lib/test/test_threading.py b/Lib/test/test_threading.py index c8f9cac8f9c..cb6f6d2ae91 100644 --- a/Lib/test/test_threading.py +++ b/Lib/test/test_threading.py @@ -186,7 +186,8 @@ class ThreadTests(unittest.TestCase): # Now raise an exception in the worker thread. if verbose: print " waiting for worker thread to get started" - worker_started.wait() + ret = worker_started.wait() + self.assertTrue(ret) if verbose: print " verifying worker hasn't exited" self.assert_(not t.finished) diff --git a/Lib/threading.py b/Lib/threading.py index a776c66752b..cc2be1b8605 100644 --- a/Lib/threading.py +++ b/Lib/threading.py @@ -391,6 +391,7 @@ class _Event(_Verbose): try: if not self.__flag: self.__cond.wait(timeout) + return self.__flag finally: self.__cond.release()