[Python-checkins] r70894 - python/trunk/Lib/threading.py

benjamin.peterson python-checkins at python.org
Tue Mar 31 23:06:30 CEST 2009


Author: benjamin.peterson
Date: Tue Mar 31 23:06:30 2009
New Revision: 70894

Log:
take the usual lock precautions around _active_limbo_lock

Modified:
   python/trunk/Lib/threading.py

Modified: python/trunk/Lib/threading.py
==============================================================================
--- python/trunk/Lib/threading.py	(original)
+++ python/trunk/Lib/threading.py	Tue Mar 31 23:06:30 2009
@@ -466,9 +466,8 @@
             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 @@
         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 @@
     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 @@
         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 @@
 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
 


More information about the Python-checkins mailing list