[3.12] gh-104812: Run Pending Calls in any Thread (gh-104813) (gh-105752)

For a while now, pending calls only run in the main thread (in the main interpreter).  This PR changes things to allow any thread run a pending call, unless the pending call was explicitly added for the main thread to run.
(cherry picked from commit 757b402)
This commit is contained in:
Eric Snow 2023-06-13 18:50:08 -06:00 committed by GitHub
parent 75239d5ec1
commit 33d3069c45
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
17 changed files with 1342 additions and 689 deletions

View file

@ -2152,6 +2152,9 @@ Py_EndInterpreter(PyThreadState *tstate)
// Wrap up existing "threading"-module-created, non-daemon threads.
wait_for_thread_shutdown(tstate);
// Make any remaining pending calls.
_Py_FinishPendingCalls(tstate);
_PyAtExit_Call(tstate->interp);
if (tstate != interp->threads.head || tstate->next != NULL) {