Merge: #11866: Eliminate race condition in the computation of names for new threads.

This commit is contained in:
R David Murray 2014-10-04 17:45:15 -04:00
commit f5387c0d6d
2 changed files with 7 additions and 5 deletions

View file

@ -6,7 +6,7 @@ import _thread
from time import monotonic as _time from time import monotonic as _time
from traceback import format_exc as _format_exc from traceback import format_exc as _format_exc
from _weakrefset import WeakSet from _weakrefset import WeakSet
from itertools import islice as _islice from itertools import islice as _islice, count as _count
try: try:
from _collections import deque as _deque from _collections import deque as _deque
except ImportError: except ImportError:
@ -729,11 +729,10 @@ class BrokenBarrierError(RuntimeError):
# Helper to generate new thread names # Helper to generate new thread names
_counter = 0 _counter = _count().__next__
_counter() # Consume 0 so first non-main thread has id 1.
def _newname(template="Thread-%d"): def _newname(template="Thread-%d"):
global _counter return template % _counter()
_counter += 1
return template % _counter
# Active thread administration # Active thread administration
_active_limbo_lock = _allocate_lock() _active_limbo_lock = _allocate_lock()

View file

@ -162,6 +162,9 @@ Core and Builtins
Library Library
------- -------
- Issue #11866: Eliminated race condition in the computation of names
for new threads.
- Issue #21905: Avoid RuntimeError in pickle.whichmodule() when sys.modules - Issue #21905: Avoid RuntimeError in pickle.whichmodule() when sys.modules
is mutated while iterating. Patch by Olivier Grisel. is mutated while iterating. Patch by Olivier Grisel.