changeset: 92812:a6b4add67168 branch: 2.7 parent: 92798:a3e18dd8f267 user: R David Murray date: Sat Oct 04 17:40:43 2014 -0400 files: Lib/threading.py Misc/NEWS description: #11866: Eliminate race condition in the computation of names for new threads. Original patch by Peter Saveliev. diff -r a3e18dd8f267 -r a6b4add67168 Lib/threading.py --- a/Lib/threading.py Sat Oct 04 15:04:41 2014 +0300 +++ b/Lib/threading.py Sat Oct 04 17:40:43 2014 -0400 @@ -11,6 +11,7 @@ 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 @@ 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 -r a3e18dd8f267 -r a6b4add67168 Misc/NEWS --- a/Misc/NEWS Sat Oct 04 15:04:41 2014 +0300 +++ b/Misc/NEWS Sat Oct 04 17:40:43 2014 -0400 @@ -34,6 +34,9 @@ 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.