From: Benjamin Peterson Date: Tue, 31 Mar 2009 21:06:30 +0000 (+0000) Subject: take the usual lock precautions around _active_limbo_lock X-Git-Tag: v2.7a1~1669 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=bd9dd31abdb81c81242aa9ab081d90db17eef0c0;p=python take the usual lock precautions around _active_limbo_lock --- diff --git a/Lib/threading.py b/Lib/threading.py index cc2be1b860..28a8a2f946 100644 --- a/Lib/threading.py +++ b/Lib/threading.py @@ -466,9 +466,8 @@ class Thread(_Verbose): raise RuntimeError("thread already started") if __debug__: self._note("%s.start(): starting thread", self) - _active_limbo_lock.acquire() - _limbo[self] = self - _active_limbo_lock.release() + with _active_limbo_lock: + _limbo[self] = self _start_new_thread(self.__bootstrap, ()) self.__started.wait() @@ -505,10 +504,9 @@ class Thread(_Verbose): try: self.__ident = _get_ident() self.__started.set() - _active_limbo_lock.acquire() - _active[self.__ident] = self - del _limbo[self] - _active_limbo_lock.release() + with _active_limbo_lock: + _active[self.__ident] = self + del _limbo[self] if __debug__: self._note("%s.__bootstrap(): thread started", self) @@ -735,9 +733,8 @@ class _MainThread(Thread): def __init__(self): Thread.__init__(self, name="MainThread") self._Thread__started.set() - _active_limbo_lock.acquire() - _active[_get_ident()] = self - _active_limbo_lock.release() + with _active_limbo_lock: + _active[_get_ident()] = self def _set_daemon(self): return False @@ -781,9 +778,8 @@ class _DummyThread(Thread): del self._Thread__block self._Thread__started.set() - _active_limbo_lock.acquire() - _active[_get_ident()] = self - _active_limbo_lock.release() + with _active_limbo_lock: + _active[_get_ident()] = self def _set_daemon(self): return True @@ -804,18 +800,14 @@ def currentThread(): current_thread = currentThread def activeCount(): - _active_limbo_lock.acquire() - count = len(_active) + len(_limbo) - _active_limbo_lock.release() - return count + with _active_limbo_lock: + return len(_active) + len(_limbo) active_count = activeCount def enumerate(): - _active_limbo_lock.acquire() - active = _active.values() + _limbo.values() - _active_limbo_lock.release() - return active + with _active_limbo_lock: + return _active.values() + _limbo.values() from thread import stack_size