Kaydet (Commit) bd9dd31a authored tarafından Benjamin Peterson's avatar Benjamin Peterson

take the usual lock precautions around _active_limbo_lock

üst 186188d8
...@@ -466,9 +466,8 @@ class Thread(_Verbose): ...@@ -466,9 +466,8 @@ class Thread(_Verbose):
raise RuntimeError("thread already started") raise RuntimeError("thread already started")
if __debug__: if __debug__:
self._note("%s.start(): starting thread", self) self._note("%s.start(): starting thread", self)
_active_limbo_lock.acquire() with _active_limbo_lock:
_limbo[self] = self _limbo[self] = self
_active_limbo_lock.release()
_start_new_thread(self.__bootstrap, ()) _start_new_thread(self.__bootstrap, ())
self.__started.wait() self.__started.wait()
...@@ -505,10 +504,9 @@ class Thread(_Verbose): ...@@ -505,10 +504,9 @@ class Thread(_Verbose):
try: try:
self.__ident = _get_ident() self.__ident = _get_ident()
self.__started.set() self.__started.set()
_active_limbo_lock.acquire() with _active_limbo_lock:
_active[self.__ident] = self _active[self.__ident] = self
del _limbo[self] del _limbo[self]
_active_limbo_lock.release()
if __debug__: if __debug__:
self._note("%s.__bootstrap(): thread started", self) self._note("%s.__bootstrap(): thread started", self)
...@@ -735,9 +733,8 @@ class _MainThread(Thread): ...@@ -735,9 +733,8 @@ class _MainThread(Thread):
def __init__(self): def __init__(self):
Thread.__init__(self, name="MainThread") Thread.__init__(self, name="MainThread")
self._Thread__started.set() self._Thread__started.set()
_active_limbo_lock.acquire() with _active_limbo_lock:
_active[_get_ident()] = self _active[_get_ident()] = self
_active_limbo_lock.release()
def _set_daemon(self): def _set_daemon(self):
return False return False
...@@ -781,9 +778,8 @@ class _DummyThread(Thread): ...@@ -781,9 +778,8 @@ class _DummyThread(Thread):
del self._Thread__block del self._Thread__block
self._Thread__started.set() self._Thread__started.set()
_active_limbo_lock.acquire() with _active_limbo_lock:
_active[_get_ident()] = self _active[_get_ident()] = self
_active_limbo_lock.release()
def _set_daemon(self): def _set_daemon(self):
return True return True
...@@ -804,18 +800,14 @@ def currentThread(): ...@@ -804,18 +800,14 @@ def currentThread():
current_thread = currentThread current_thread = currentThread
def activeCount(): def activeCount():
_active_limbo_lock.acquire() with _active_limbo_lock:
count = len(_active) + len(_limbo) return len(_active) + len(_limbo)
_active_limbo_lock.release()
return count
active_count = activeCount active_count = activeCount
def enumerate(): def enumerate():
_active_limbo_lock.acquire() with _active_limbo_lock:
active = _active.values() + _limbo.values() return _active.values() + _limbo.values()
_active_limbo_lock.release()
return active
from thread import stack_size from thread import stack_size
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment