Commit 61611f84 authored by Benjamin Peterson's avatar Benjamin Peterson

Merged revisions 70897 via svnmerge from

svn+ssh://pythondev@svn.python.org/python/trunk

........
  r70897 | benjamin.peterson | 2009-03-31 16:34:42 -0500 (Tue, 31 Mar 2009) | 1 line

  fix Thread.ident when it is the main thread or a dummy thread #5632
........
parent a6f278cf
......@@ -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()
_active_limbo_lock.acquire()
_active[self.__ident] = self
......@@ -734,6 +737,7 @@ class _MainThread(Thread):
def __init__(self):
Thread.__init__(self, name="MainThread")
self._Thread__started.set()
self._set_ident()
_active_limbo_lock.acquire()
_active[_get_ident()] = self
_active_limbo_lock.release()
......@@ -780,6 +784,7 @@ class _DummyThread(Thread):
del self._Thread__block
self._Thread__started.set()
self._set_ident()
_active_limbo_lock.acquire()
_active[_get_ident()] = self
_active_limbo_lock.release()
......
......@@ -92,6 +92,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
- Fix and properly document the multiprocessing module's logging
......
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