#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 7a5a440..37aa3b8 100644
--- a/Lib/threading.py
+++ b/Lib/threading.py
@@ -9,7 +9,7 @@
     from time import time as _time
 from traceback import format_exc as _format_exc
 from _weakrefset import WeakSet
-from itertools import islice as _islice
+from itertools import islice as _islice, count as _count
 try:
     from _collections import deque as _deque
 except ImportError:
@@ -726,11 +726,10 @@
 
 
 # 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 += 1
-    return template % _counter
+    return template % _counter()
 
 # Active thread administration
 _active_limbo_lock = _allocate_lock()