[Python-checkins] cpython: Close #19576: PyGILState_Ensure() now initializes threads. At startup, Python

victor.stinner python-checkins at python.org
Fri Dec 13 01:48:00 CET 2013


http://hg.python.org/cpython/rev/dc4e805ec68a
changeset: 87916:dc4e805ec68a
user: Victor Stinner <victor.stinner at gmail.com>
date: Fri Dec 13 01:46:43 2013 +0100
summary:
 Close #19576: PyGILState_Ensure() now initializes threads. At startup, Python
has no concrete GIL. If PyGILState_Ensure() is called from a new thread for the
first time and PyEval_InitThreads() was not called yet, a GIL needs to be
created.
files:
 Misc/NEWS | 5 +++++
 Python/pystate.c | 5 +++++
 2 files changed, 10 insertions(+), 0 deletions(-)
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -10,6 +10,11 @@
 Core and Builtins
 -----------------
 
+- Issue #19576: PyGILState_Ensure() now initializes threads. At startup, Python
+ has no concrete GIL. If PyGILState_Ensure() is called from a new thread for
+ the first time and PyEval_InitThreads() was not called yet, a GIL needs to be
+ created.
+
 - Issue #17576: Deprecation warning emitted now when __int__() or __index__()
 return not int instance.
 
diff --git a/Python/pystate.c b/Python/pystate.c
--- a/Python/pystate.c
+++ b/Python/pystate.c
@@ -771,6 +771,11 @@
 assert(autoInterpreterState); /* Py_Initialize() hasn't been called! */
 tcur = (PyThreadState *)PyThread_get_key_value(autoTLSkey);
 if (tcur == NULL) {
+ /* At startup, Python has no concrete GIL. If PyGILState_Ensure() is
+ called from a new thread for the first time, we need the create the
+ GIL. */
+ PyEval_InitThreads();
+
 /* Create a new thread state for this thread */
 tcur = PyThreadState_New(autoInterpreterState);
 if (tcur == NULL)
-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /