diff options
-rw-r--r-- | Lib/threading.py | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/Lib/threading.py b/Lib/threading.py index f949d75..1e769a8 100644 --- a/Lib/threading.py +++ b/Lib/threading.py @@ -318,20 +318,26 @@ class _Event(_Verbose): def set(self): self.__cond.acquire() - self.__flag = True - self.__cond.notifyAll() - self.__cond.release() + try: + self.__flag = True + self.__cond.notifyAll() + finally: + self.__cond.release() def clear(self): self.__cond.acquire() - self.__flag = False - self.__cond.release() + try: + self.__flag = False + finally: + self.__cond.release() def wait(self, timeout=None): self.__cond.acquire() - if not self.__flag: - self.__cond.wait(timeout) - self.__cond.release() + try: + if not self.__flag: + self.__cond.wait(timeout) + finally: + self.__cond.release() # Helper to generate new thread names _counter = 0 |