[Python-checkins] cpython: Backed out changeset 1f5a7853680c
tim.peters
python-checkins at python.org
Mon Sep 9 20:49:17 CEST 2013
http://hg.python.org/cpython/rev/e61780cd2c78
changeset: 85648:e61780cd2c78
user: Tim Peters <tim at python.org>
date: Mon Sep 09 13:47:16 2013 -0500
summary:
Backed out changeset 1f5a7853680c
Unixy buildbots were failing the thread + fork tests :-(
files:
Lib/threading.py | 31 +++++--------------------------
1 files changed, 5 insertions(+), 26 deletions(-)
diff --git a/Lib/threading.py b/Lib/threading.py
--- a/Lib/threading.py
+++ b/Lib/threading.py
@@ -703,28 +703,8 @@
pass
def _stop(self):
- # After calling .stop(), .is_alive() returns False and .join() returns
- # immediately. ._tstate_lock must be released before calling ._stop().
- #
- # Normal case: C code at the end of the thread's life
- # (release_sentinel in _threadmodule.c) releases ._tstate_lock, and
- # that's detected by our ._wait_for_tstate_lock(), called by .join()
- # and .is_alive(). Any number of threads _may_ call ._stop()
- # simultaneously (for example, if multiple threads are blocked in
- # .join() calls), and they're not serialized. That's harmless -
- # they'll just make redundant rebindings of ._is_stopped and
- # ._tstate_lock. Obscure: we rebind ._tstate_lock last so that the
- # "assert self._is_stopped" in ._wait_for_tstate_lock() always works
- # (the assert is executed only if ._tstate_lock is None).
- #
- # Special case: _main_thread releases ._tstate_lock via this module's
- # _shutdown() function.
- tlock = self._tstate_lock
- if tlock is not None:
- # It's OK if multiple threads get in here (see above).
- assert not tlock.locked()
- self._is_stopped = True
- self._tstate_lock = None
+ self._is_stopped = True
+ self._tstate_lock = None
def _delete(self):
"Remove current thread from the dict of currently running threads."
@@ -941,10 +921,9 @@
# the main thread's tstate_lock - that won't happen until the interpreter
# is nearly dead. So we release it here. Note that just calling _stop()
# isn't enough: other threads may already be waiting on _tstate_lock.
- tlock = _main_thread._tstate_lock
- assert tlock is not None
- assert tlock.locked()
- tlock.release()
+ assert _main_thread._tstate_lock is not None
+ assert _main_thread._tstate_lock.locked()
+ _main_thread._tstate_lock.release()
_main_thread._stop()
t = _pickSomeNonDaemonThread()
while t:
--
Repository URL: http://hg.python.org/cpython
More information about the Python-checkins
mailing list