mirror of
https://github.com/python/cpython.git
synced 2025-08-29 21:25:01 +00:00
bpo-33608: Factor out a private, per-interpreter _Py_AddPendingCall(). (gh-12360)
This is effectively an un-revert of #11617 and #12024 (reverted in #12159). Portions of those were merged in other PRs (with lower risk) and this represents the remainder. Note that I found 3 different bugs in the original PRs and have fixed them here.
This commit is contained in:
parent
44235041f3
commit
f13c5c8b94
11 changed files with 151 additions and 108 deletions
|
@ -1146,7 +1146,7 @@ Py_FinalizeEx(void)
|
|||
interp = tstate->interp;
|
||||
|
||||
// Make any remaining pending calls.
|
||||
_Py_FinishPendingCalls();
|
||||
_Py_FinishPendingCalls(interp);
|
||||
|
||||
/* The interpreter is still entirely intact at this point, and the
|
||||
* exit funcs may be relying on that. In particular, if some thread
|
||||
|
@ -1552,6 +1552,9 @@ Py_EndInterpreter(PyThreadState *tstate)
|
|||
// Wrap up existing "threading"-module-created, non-daemon threads.
|
||||
wait_for_thread_shutdown();
|
||||
|
||||
// Make any remaining pending calls.
|
||||
_Py_FinishPendingCalls(interp);
|
||||
|
||||
call_py_exitfuncs(interp);
|
||||
|
||||
if (tstate != interp->tstate_head || tstate->next != NULL)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue