Backport of r66275/r66274 from trunk/py3k. This is the last bit of

the fix for issue 874900 to fix the use of the threading module in a
post-fork python process.  A NEWS entry for this already exists with
the previous Lib/threading commit for this bug.
This commit is contained in:
Gregory P. Smith 2008-09-07 01:03:35 +00:00
parent 6477350b53
commit 34c688129f
1 changed files with 5 additions and 2 deletions

View File

@ -781,9 +781,12 @@ def _after_fork():
current = currentThread() current = currentThread()
_active_limbo_lock.acquire() _active_limbo_lock.acquire()
try: try:
for ident, thread in _active.iteritems(): for thread in _active.itervalues():
if thread is current: if thread is current:
# There is only one active thread. # There is only one active thread. We reset the ident to
# its new value since it can have changed.
ident = _get_ident()
thread._Thread__ident = ident
new_active[ident] = thread new_active[ident] = thread
else: else:
# All the others are already stopped. # All the others are already stopped.