mirror of https://github.com/python/cpython
gh-123275: Support `-Xgil=1` and `PYTHON_GIL=1` on non-free-threaded builds (gh-123276)
This commit is contained in:
parent
42f52431e9
commit
84ad264ce6
|
@ -622,7 +622,7 @@ Miscellaneous options
|
||||||
.. versionadded:: 3.13
|
.. versionadded:: 3.13
|
||||||
|
|
||||||
* :samp:`-X gil={0,1}` forces the GIL to be disabled or enabled,
|
* :samp:`-X gil={0,1}` forces the GIL to be disabled or enabled,
|
||||||
respectively. Only available in builds configured with
|
respectively. Setting to ``0`` is only available in builds configured with
|
||||||
:option:`--disable-gil`. See also :envvar:`PYTHON_GIL` and
|
:option:`--disable-gil`. See also :envvar:`PYTHON_GIL` and
|
||||||
:ref:`whatsnew313-free-threaded-cpython`.
|
:ref:`whatsnew313-free-threaded-cpython`.
|
||||||
|
|
||||||
|
@ -1221,13 +1221,12 @@ conflict.
|
||||||
.. envvar:: PYTHON_GIL
|
.. envvar:: PYTHON_GIL
|
||||||
|
|
||||||
If this variable is set to ``1``, the global interpreter lock (GIL) will be
|
If this variable is set to ``1``, the global interpreter lock (GIL) will be
|
||||||
forced on. Setting it to ``0`` forces the GIL off.
|
forced on. Setting it to ``0`` forces the GIL off (needs Python configured with
|
||||||
|
the :option:`--disable-gil` build option).
|
||||||
|
|
||||||
See also the :option:`-X gil <-X>` command-line option, which takes
|
See also the :option:`-X gil <-X>` command-line option, which takes
|
||||||
precedence over this variable, and :ref:`whatsnew313-free-threaded-cpython`.
|
precedence over this variable, and :ref:`whatsnew313-free-threaded-cpython`.
|
||||||
|
|
||||||
Needs Python configured with the :option:`--disable-gil` build option.
|
|
||||||
|
|
||||||
.. versionadded:: 3.13
|
.. versionadded:: 3.13
|
||||||
|
|
||||||
Debug-mode variables
|
Debug-mode variables
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
Support :option:`-X gil=1 <-X>` and :envvar:`PYTHON_GIL=1 <PYTHON_GIL>` on non-free-threaded builds.
|
|
@ -1714,20 +1714,24 @@ config_wstr_to_int(const wchar_t *wstr, int *result)
|
||||||
static PyStatus
|
static PyStatus
|
||||||
config_read_gil(PyConfig *config, size_t len, wchar_t first_char)
|
config_read_gil(PyConfig *config, size_t len, wchar_t first_char)
|
||||||
{
|
{
|
||||||
#ifdef Py_GIL_DISABLED
|
|
||||||
if (len == 1 && first_char == L'0') {
|
if (len == 1 && first_char == L'0') {
|
||||||
|
#ifdef Py_GIL_DISABLED
|
||||||
config->enable_gil = _PyConfig_GIL_DISABLE;
|
config->enable_gil = _PyConfig_GIL_DISABLE;
|
||||||
|
#else
|
||||||
|
return _PyStatus_ERR("Disabling the GIL is not supported by this build");
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
else if (len == 1 && first_char == L'1') {
|
else if (len == 1 && first_char == L'1') {
|
||||||
|
#ifdef Py_GIL_DISABLED
|
||||||
config->enable_gil = _PyConfig_GIL_ENABLE;
|
config->enable_gil = _PyConfig_GIL_ENABLE;
|
||||||
|
#else
|
||||||
|
return _PyStatus_OK();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return _PyStatus_ERR("PYTHON_GIL / -X gil must be \"0\" or \"1\"");
|
return _PyStatus_ERR("PYTHON_GIL / -X gil must be \"0\" or \"1\"");
|
||||||
}
|
}
|
||||||
return _PyStatus_OK();
|
return _PyStatus_OK();
|
||||||
#else
|
|
||||||
return _PyStatus_ERR("PYTHON_GIL / -X gil are not supported by this build");
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static PyStatus
|
static PyStatus
|
||||||
|
|
Loading…
Reference in New Issue