bpo-39877: Deprecate PyEval_InitThreads() (GH-18892)
Deprecated PyEval_InitThreads() and PyEval_ThreadsInitialized(). Calling PyEval_InitThreads() now does nothing.
This commit is contained in:
parent
175a704abf
commit
b4698ecfdb
|
@ -842,12 +842,12 @@ code, or when embedding the Python interpreter:
|
||||||
single: PyEval_SaveThread()
|
single: PyEval_SaveThread()
|
||||||
single: PyEval_RestoreThread()
|
single: PyEval_RestoreThread()
|
||||||
|
|
||||||
Initialize and acquire the global interpreter lock. It should be called in the
|
Deprecated function which does nothing.
|
||||||
main thread before creating a second thread or engaging in any other thread
|
|
||||||
operations such as ``PyEval_ReleaseThread(tstate)``. It is not needed before
|
|
||||||
calling :c:func:`PyEval_SaveThread` or :c:func:`PyEval_RestoreThread`.
|
|
||||||
|
|
||||||
This is a no-op when called for a second time.
|
In Python 3.6 and older, this function created the GIL if it didn't exist.
|
||||||
|
|
||||||
|
.. versionchanged:: 3.9
|
||||||
|
The function now does nothing.
|
||||||
|
|
||||||
.. versionchanged:: 3.7
|
.. versionchanged:: 3.7
|
||||||
This function is now called by :c:func:`Py_Initialize()`, so you don't
|
This function is now called by :c:func:`Py_Initialize()`, so you don't
|
||||||
|
@ -856,6 +856,8 @@ code, or when embedding the Python interpreter:
|
||||||
.. versionchanged:: 3.2
|
.. versionchanged:: 3.2
|
||||||
This function cannot be called before :c:func:`Py_Initialize()` anymore.
|
This function cannot be called before :c:func:`Py_Initialize()` anymore.
|
||||||
|
|
||||||
|
.. deprecated-removed:: 3.9 3.11
|
||||||
|
|
||||||
.. index:: module: _thread
|
.. index:: module: _thread
|
||||||
|
|
||||||
|
|
||||||
|
@ -868,6 +870,8 @@ code, or when embedding the Python interpreter:
|
||||||
.. versionchanged:: 3.7
|
.. versionchanged:: 3.7
|
||||||
The :term:`GIL` is now initialized by :c:func:`Py_Initialize()`.
|
The :term:`GIL` is now initialized by :c:func:`Py_Initialize()`.
|
||||||
|
|
||||||
|
.. deprecated-removed:: 3.9 3.11
|
||||||
|
|
||||||
|
|
||||||
.. c:function:: PyThreadState* PyEval_SaveThread()
|
.. c:function:: PyThreadState* PyEval_SaveThread()
|
||||||
|
|
||||||
|
|
|
@ -519,6 +519,12 @@ Deprecated
|
||||||
|
|
||||||
(Contributed by Victor Stinner in :issue:`39353`.)
|
(Contributed by Victor Stinner in :issue:`39353`.)
|
||||||
|
|
||||||
|
* The :c:func:`PyEval_InitThreads` and :c:func:`PyEval_ThreadsInitialized`
|
||||||
|
functions are now deprecated and will be removed in Python 3.11. Calling
|
||||||
|
:c:func:`PyEval_InitThreads` now does nothing. The :term:`GIL` is initialized
|
||||||
|
by :c:func:`Py_Initialize()` since Python 3.7.
|
||||||
|
(Contributed by Victor Stinner in :issue:`39877`.)
|
||||||
|
|
||||||
|
|
||||||
Removed
|
Removed
|
||||||
=======
|
=======
|
||||||
|
|
|
@ -128,8 +128,8 @@ PyAPI_FUNC(PyObject *) PyEval_EvalFrameEx(struct _frame *f, int exc);
|
||||||
PyAPI_FUNC(PyThreadState *) PyEval_SaveThread(void);
|
PyAPI_FUNC(PyThreadState *) PyEval_SaveThread(void);
|
||||||
PyAPI_FUNC(void) PyEval_RestoreThread(PyThreadState *);
|
PyAPI_FUNC(void) PyEval_RestoreThread(PyThreadState *);
|
||||||
|
|
||||||
PyAPI_FUNC(int) PyEval_ThreadsInitialized(void);
|
Py_DEPRECATED(3.9) PyAPI_FUNC(int) PyEval_ThreadsInitialized(void);
|
||||||
PyAPI_FUNC(void) PyEval_InitThreads(void);
|
Py_DEPRECATED(3.9) PyAPI_FUNC(void) PyEval_InitThreads(void);
|
||||||
Py_DEPRECATED(3.2) PyAPI_FUNC(void) PyEval_AcquireLock(void);
|
Py_DEPRECATED(3.2) PyAPI_FUNC(void) PyEval_AcquireLock(void);
|
||||||
/* Py_DEPRECATED(3.2) */ PyAPI_FUNC(void) PyEval_ReleaseLock(void);
|
/* Py_DEPRECATED(3.2) */ PyAPI_FUNC(void) PyEval_ReleaseLock(void);
|
||||||
PyAPI_FUNC(void) PyEval_AcquireThread(PyThreadState *tstate);
|
PyAPI_FUNC(void) PyEval_AcquireThread(PyThreadState *tstate);
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
Deprecated :c:func:`PyEval_InitThreads` and
|
||||||
|
:c:func:`PyEval_ThreadsInitialized`. Calling :c:func:`PyEval_InitThreads` now
|
||||||
|
does nothing.
|
|
@ -241,12 +241,7 @@ _PyEval_InitThreads(PyThreadState *tstate)
|
||||||
void
|
void
|
||||||
PyEval_InitThreads(void)
|
PyEval_InitThreads(void)
|
||||||
{
|
{
|
||||||
PyThreadState *tstate = _PyThreadState_GET();
|
/* Do nothing: kept for backward compatibility */
|
||||||
|
|
||||||
PyStatus status = _PyEval_InitThreads(tstate);
|
|
||||||
if (_PyStatus_EXCEPTION(status)) {
|
|
||||||
Py_ExitStatusException(status);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
Loading…
Reference in New Issue