[Python-checkins] r70897 - in python/trunk: Lib/test/test_threading.py Lib/threading.py Misc/NEWS
benjamin.peterson
python-checkins at python.org
Tue Mar 31 23:34:42 CEST 2009
Author: benjamin.peterson
Date: Tue Mar 31 23:34:42 2009
New Revision: 70897
Log:
fix Thread.ident when it is the main thread or a dummy thread #5632
Modified:
python/trunk/Lib/test/test_threading.py
python/trunk/Lib/threading.py
python/trunk/Misc/NEWS
Modified: python/trunk/Lib/test/test_threading.py
==============================================================================
--- python/trunk/Lib/test/test_threading.py (original)
+++ python/trunk/Lib/test/test_threading.py Tue Mar 31 23:34:42 2009
@@ -83,11 +83,24 @@
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:
Modified: python/trunk/Lib/threading.py
==============================================================================
--- python/trunk/Lib/threading.py (original)
+++ python/trunk/Lib/threading.py Tue Mar 31 23:34:42 2009
@@ -500,9 +500,12 @@
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 @@
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 @@
del self._Thread__block
self._Thread__started.set()
+ self._set_ident()
with _active_limbo_lock:
_active[_get_ident()] = self
Modified: python/trunk/Misc/NEWS
==============================================================================
--- python/trunk/Misc/NEWS (original)
+++ python/trunk/Misc/NEWS Tue Mar 31 23:34:42 2009
@@ -199,6 +199,9 @@
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.
More information about the Python-checkins
mailing list