diff options
author | Victor Stinner <victor.stinner@gmail.com> | 2013-12-13 00:46:43 (GMT) |
---|---|---|
committer | Victor Stinner <victor.stinner@gmail.com> | 2013-12-13 00:46:43 (GMT) |
commit | 62ca10051b5aa07b86807a50674dbef4cace22f7 (patch) | |
tree | a44e3375e425b589df8b8131f1c7f4b05b1979d8 /Python/pystate.c | |
parent | 56668dc187d9b77b76c8906a8e23198314aec18a (diff) | |
download | cpython-62ca10051b5aa07b86807a50674dbef4cace22f7.zip cpython-62ca10051b5aa07b86807a50674dbef4cace22f7.tar.gz cpython-62ca10051b5aa07b86807a50674dbef4cace22f7.tar.bz2 |
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.
Diffstat (limited to 'Python/pystate.c')
-rw-r--r-- | Python/pystate.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/Python/pystate.c b/Python/pystate.c index 6be71de..a56e308 100644 --- a/Python/pystate.c +++ b/Python/pystate.c @@ -771,6 +771,11 @@ PyGILState_Ensure(void) 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) |