From: R David Murray Date: Sat, 4 Oct 2014 21:40:43 +0000 (-0400) Subject: #11866: Eliminate race condition in the computation of names for new threads. X-Git-Tag: v2.7.9rc1~162 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d999c3495581ac58a8bd4d7f60e9e14a83937673;p=thirdparty%2FPython%2Fcpython.git #11866: Eliminate race condition in the computation of names for new threads. Original patch by Peter Saveliev. --- diff --git a/Lib/threading.py b/Lib/threading.py index 0438e1f5209d..27a5511ddc29 100644 --- a/Lib/threading.py +++ b/Lib/threading.py @@ -11,6 +11,7 @@ except ImportError: import warnings from collections import deque as _deque +from itertools import count as _count from time import time as _time, sleep as _sleep from traceback import format_exc as _format_exc @@ -623,11 +624,10 @@ class _Event(_Verbose): self.__cond.release() # 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"): - global _counter - _counter = _counter + 1 - return template % _counter + return template % _counter() # Active thread administration _active_limbo_lock = _allocate_lock() diff --git a/Misc/NEWS b/Misc/NEWS index 6dc092e069a1..5144b5082d08 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -34,6 +34,9 @@ Core and Builtins Library ------- +- Issue #11866: Eliminated race condition in the computation of names + for new threads. + - Issue #22219: The zipfile module CLI now adds entries for directories (including empty directories) in ZIP file.