bpo-38266: Revert bpo-37878: Make PyThreadState_DeleteCurrent() Internal (GH-16558)
Revert the removal of PyThreadState_DeleteCurrent() with documentation.
This commit is contained in:
parent
06cb94bc84
commit
8855e47d09
|
@ -1035,6 +1035,14 @@ All of the following functions must be called after :c:func:`Py_Initialize`.
|
||||||
:c:func:`PyThreadState_Clear`.
|
:c:func:`PyThreadState_Clear`.
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: void PyThreadState_DeleteCurrent()
|
||||||
|
|
||||||
|
Destroy the current thread state and release the global interpreter lock.
|
||||||
|
Like :c:func:`PyThreadState_Delete`, the global interpreter lock need not
|
||||||
|
be held. The thread state must have been reset with a previous call
|
||||||
|
to :c:func:`PyThreadState_Clear`.
|
||||||
|
|
||||||
|
|
||||||
.. c:function:: PY_INT64_T PyInterpreterState_GetID(PyInterpreterState *interp)
|
.. c:function:: PY_INT64_T PyInterpreterState_GetID(PyInterpreterState *interp)
|
||||||
|
|
||||||
Return the interpreter's unique ID. If there was any error in doing
|
Return the interpreter's unique ID. If there was any error in doing
|
||||||
|
|
|
@ -183,6 +183,7 @@ PyAPI_FUNC(PyInterpreterState *) PyInterpreterState_Head(void);
|
||||||
PyAPI_FUNC(PyInterpreterState *) PyInterpreterState_Next(PyInterpreterState *);
|
PyAPI_FUNC(PyInterpreterState *) PyInterpreterState_Next(PyInterpreterState *);
|
||||||
PyAPI_FUNC(PyThreadState *) PyInterpreterState_ThreadHead(PyInterpreterState *);
|
PyAPI_FUNC(PyThreadState *) PyInterpreterState_ThreadHead(PyInterpreterState *);
|
||||||
PyAPI_FUNC(PyThreadState *) PyThreadState_Next(PyThreadState *);
|
PyAPI_FUNC(PyThreadState *) PyThreadState_Next(PyThreadState *);
|
||||||
|
PyAPI_FUNC(void) PyThreadState_DeleteCurrent(void);
|
||||||
|
|
||||||
typedef struct _frame *(*PyThreadFrameGetter)(PyThreadState *self_);
|
typedef struct _frame *(*PyThreadFrameGetter)(PyThreadState *self_);
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
Revert the removal of PyThreadState_DeleteCurrent() with documentation.
|
|
@ -801,7 +801,7 @@ PyThreadState_Clear(PyThreadState *tstate)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Common code for PyThreadState_Delete() and _PyThreadState_DeleteCurrent() */
|
/* Common code for PyThreadState_Delete() and PyThreadState_DeleteCurrent() */
|
||||||
static void
|
static void
|
||||||
tstate_delete_common(_PyRuntimeState *runtime, PyThreadState *tstate)
|
tstate_delete_common(_PyRuntimeState *runtime, PyThreadState *tstate)
|
||||||
{
|
{
|
||||||
|
@ -857,7 +857,7 @@ _PyThreadState_DeleteCurrent(_PyRuntimeState *runtime)
|
||||||
PyThreadState *tstate = _PyRuntimeGILState_GetThreadState(gilstate);
|
PyThreadState *tstate = _PyRuntimeGILState_GetThreadState(gilstate);
|
||||||
if (tstate == NULL)
|
if (tstate == NULL)
|
||||||
Py_FatalError(
|
Py_FatalError(
|
||||||
"_PyThreadState_DeleteCurrent: no current tstate");
|
"PyThreadState_DeleteCurrent: no current tstate");
|
||||||
tstate_delete_common(runtime, tstate);
|
tstate_delete_common(runtime, tstate);
|
||||||
if (gilstate->autoInterpreterState &&
|
if (gilstate->autoInterpreterState &&
|
||||||
PyThread_tss_get(&gilstate->autoTSSkey) == tstate)
|
PyThread_tss_get(&gilstate->autoTSSkey) == tstate)
|
||||||
|
@ -868,6 +868,12 @@ _PyThreadState_DeleteCurrent(_PyRuntimeState *runtime)
|
||||||
PyEval_ReleaseLock();
|
PyEval_ReleaseLock();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
PyThreadState_DeleteCurrent(void)
|
||||||
|
{
|
||||||
|
_PyThreadState_DeleteCurrent(&_PyRuntime);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Delete all thread states except the one passed as argument.
|
* Delete all thread states except the one passed as argument.
|
||||||
|
|
Loading…
Reference in New Issue