159 Commits

Author SHA1 Message Date
Benjamin Peterson
414918a939 use the with statement for locking the internal condition (closes #25362)
Patch by Nir Soffer.
2015-10-10 19:34:46 -07:00
Benjamin Peterson
15982aad2b reinitialize an Event's Condition with a regular lock (closes #25319) 2015-10-05 21:56:22 -07:00
R David Murray
b186f1df41 #11866: Eliminate race condition in the computation of names for new threads.
Original patch by Peter Saveliev.
2014-10-04 17:43:54 -04:00
Serhiy Storchaka
52005c2e13 Issue #22423: Unhandled exception in thread no longer causes unhandled
AttributeError when sys.stderr is None.
2014-09-21 22:08:13 +03:00
Antoine Pitrou
a64b92edd3 Issue #22185: Fix an occasional RuntimeError in threading.Condition.wait() caused by mutation of the waiters queue without holding the lock.
Patch by Doug Zongker.
2014-08-29 23:26:36 +02:00
Victor Stinner
7fa767e517 Issue #20976: pyflakes: Remove unused imports 2014-03-20 09:16:38 +01:00
Antoine Pitrou
1095907624 Remove stray semicolon 2014-03-17 18:22:41 +01:00
Tim Peters
a577f1e0f1 Changed a comment to end grammar bikeshedding ;-) 2013-10-26 11:56:16 -05:00
Tim Peters
7bad39f174 Fiddled Thread.join() to be a little simpler. Kinda ;-) 2013-10-25 22:33:52 -05:00
Tim Peters
e5bb0bf04d Issue #19399: fix sporadic test_subprocess failure.
Change Thread.join() with a negative timeout to just return.  The
behavior isn't documented then, but this restores previous
behavior.
2013-10-25 20:46:51 -05:00
Georg Brandl
bb2ed516cc merge with 3.3 2013-10-13 10:44:04 +02:00
Georg Brandl
c30b59fe3d Closes #17375: port new threading docstrings from 2.7. 2013-10-13 10:43:59 +02:00
Tim Peters
e99bdb9694 Issue 19158: a rare race in BoundedSemaphore could allow .release() too often. 2013-10-08 21:12:58 -05:00
Tim Peters
7634e1cf90 Issue 19158: a rare race in BoundedSemaphore could allow .release() too often. 2013-10-08 20:55:51 -05:00
Tim Peters
72460fa68b Get "stopped" back into repr(Thread) when appropriate.
Due to recent changes, a Thread doesn't know that it's over before
someone calls .join() or .is_alive().  That meant repr(Thread)
continued to include "started" (and not "stopped") before one of
those methods was called, even if hours passed since the thread
ended.

Repaired that.
2013-09-09 18:48:24 -05:00
Tim Peters
b5e9ac9ec6 Another stab at the thread cleanup patch.
Antoine Pitrou found a variation that worked for him on the
thread+fork tests, and added an important

    self._is_stopped = True

to the after-fork code.  I confess I don't know why things passed
before.  But then mixing fork with threads is insane ;-)
2013-09-09 14:41:50 -05:00
Tim Peters
7875523f16 Backed out changeset 1f5a7853680c
Unixy buildbots were failing the thread + fork tests :-(
2013-09-09 13:47:16 -05:00
Tim Peters
7a6054b19d Minor cleanup of the new scheme for detecting thread termination.
Documented some obscurities, and assert'ed ._stop()'s crucial precondition.
2013-09-09 12:57:10 -05:00
Tim Peters
c363a23eff Issue 18984: Remove ._stopped Event from Thread internals.
The fix for issue 18808 left us checking two things to be sure a Thread
was done:  an Event (._stopped) and a mutex (._tstate_lock).  Clumsy &
brittle.  This patch removes the Event, leaving just a happy lock :-)

The bulk of the patch removes two excruciating tests, which were
verifying sanity of the internals of the ._stopped Event after a fork.
Thanks to Antoine Pitrou for verifying that's the only real value
these tests had.

One consequence of moving from an Event to a mutex:  waiters (threads
calling Thread.join()) used to block each on their own unique mutex
(internal to the ._stopped event), but now all contend on the same
mutex (._tstate_lock).  These approaches have different performance
characteristics on different platforms.  I don't think it matters in
this context.
2013-09-08 18:44:40 -05:00
Antoine Pitrou
5da7e7959e Issue #18808 again: fix the after-fork logic for not-yet-started or already-stopped threads.
(AFAICT, in theory, we must reset all the locks, not just those in use)
2013-09-08 13:19:06 +02:00
Tim Peters
68d7f78703 Issue 18808: blind attempt to repair some buildbot failures.
test_is_alive_after_fork is failing on some old Linux kernels, but
passing on all newer ones.  Since virtually anything can go wrong
with locks when mixing threads with fork, replace the most likely
cause with a redundant simple data member.
2013-09-07 21:23:03 -05:00
Antoine Pitrou
7b4769937f Issue #18808: Thread.join() now waits for the underlying thread state to be destroyed before returning.
This prevents unpredictable aborts in Py_EndInterpreter() when some non-daemon threads are still running.
2013-09-07 23:38:37 +02:00
Andrew Svetlov
b1dd5572d3 Add docstring for threading.main_thread(). 2013-09-04 10:33:11 +03:00
Andrew Svetlov
58b5c5ad14 Issue #18882: Add threading.main_thread() function. 2013-09-04 07:01:07 +03:00
Charles-François Natali
79a53ea7d7 Issue #18418: After fork(), reinit all threads states, not only active ones.
Patch by A. Jesse Jiryu Davis.
2013-08-30 23:34:26 +02:00