fix Thread.ident when it is the main thread or a dummy thread #5632
This commit is contained in:
parent
a08e8dedc2
commit
d906ea62c8
|
@ -83,11 +83,24 @@ class ThreadTests(unittest.TestCase):
|
|||
t.join(NUMTASKS)
|
||||
self.assert_(not t.is_alive())
|
||||
self.failIfEqual(t.ident, 0)
|
||||
self.assertFalse(t.ident is None)
|
||||
self.assert_(re.match('<TestThread\(.*, \w+ -?\d+\)>', repr(t)))
|
||||
if verbose:
|
||||
print 'all tasks done'
|
||||
self.assertEqual(numrunning.get(), 0)
|
||||
|
||||
def test_ident_of_no_threading_threads(self):
|
||||
# The ident still must work for the main thread and dummy threads.
|
||||
self.assertFalse(threading.currentThread().ident is None)
|
||||
def f():
|
||||
ident.append(threading.currentThread().ident)
|
||||
done.set()
|
||||
done = threading.Event()
|
||||
ident = []
|
||||
thread.start_new_thread(f, ())
|
||||
done.wait()
|
||||
self.assertFalse(ident[0] is None)
|
||||
|
||||
# run with a small(ish) thread stack size (256kB)
|
||||
def test_various_ops_small_stack(self):
|
||||
if verbose:
|
||||
|
|
|
@ -500,9 +500,12 @@ class Thread(_Verbose):
|
|||
return
|
||||
raise
|
||||
|
||||
def _set_ident(self):
|
||||
self.__ident = _get_ident()
|
||||
|
||||
def __bootstrap_inner(self):
|
||||
try:
|
||||
self.__ident = _get_ident()
|
||||
self._set_ident()
|
||||
self.__started.set()
|
||||
with _active_limbo_lock:
|
||||
_active[self.__ident] = self
|
||||
|
@ -733,6 +736,7 @@ class _MainThread(Thread):
|
|||
def __init__(self):
|
||||
Thread.__init__(self, name="MainThread")
|
||||
self._Thread__started.set()
|
||||
self._set_ident()
|
||||
with _active_limbo_lock:
|
||||
_active[_get_ident()] = self
|
||||
|
||||
|
@ -778,6 +782,7 @@ class _DummyThread(Thread):
|
|||
del self._Thread__block
|
||||
|
||||
self._Thread__started.set()
|
||||
self._set_ident()
|
||||
with _active_limbo_lock:
|
||||
_active[_get_ident()] = self
|
||||
|
||||
|
|
|
@ -199,6 +199,9 @@ Core and Builtins
|
|||
Library
|
||||
-------
|
||||
|
||||
- Issue #5632: Thread.ident was None for the main thread and threads not created
|
||||
with the threading module.
|
||||
|
||||
- Issue #5400: Added patch for multiprocessing on netbsd compilation/support
|
||||
|
||||
- Issue #5387: Fixed mmap.move crash by integer overflow.
|
||||
|
|
Loading…
Reference in New Issue