The _bootstrap_inner() method of threading.Thread now reuses its
_delete() method rather than accessing _active() directly. It became
possible since _active_limbo_lock became reentrant. Moreover, it no
longer ignores any exception when deleting the thread from the
_active dictionary.
except:
self._invoke_excepthook(self)
finally:
- with _active_limbo_lock:
- try:
- # We don't call self._delete() because it also
- # grabs _active_limbo_lock.
- del _active[get_ident()]
- except:
- pass
+ self._delete()
def _stop(self):
# After calling ._stop(), .is_alive() returns False and .join() returns