]> granicus.if.org Git - python/commitdiff
take the usual lock precautions around _active_limbo_lock
authorBenjamin Peterson <benjamin@python.org>
Tue, 31 Mar 2009 21:06:30 +0000 (21:06 +0000)
committerBenjamin Peterson <benjamin@python.org>
Tue, 31 Mar 2009 21:06:30 +0000 (21:06 +0000)
Lib/threading.py

index cc2be1b8605cfefe9b360c1b1cafe53073dbf616..28a8a2f946e2e978f4e4277a6a302ec282661891 100644 (file)
@@ -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