mirror of
https://github.com/python/cpython.git
synced 2024-11-28 04:15:11 +08:00
Use the new functions PyEval_AcquireThread() and
PyEval_ReleaseThread() (in ceval.c) to set/reset the current thread, and at the same time acquire/release the interpreter lock. Much saner.
This commit is contained in:
parent
2fca21f762
commit
75aa0d6abe
@ -203,12 +203,11 @@ t_bootstrap(boot_raw)
|
||||
void *boot_raw;
|
||||
{
|
||||
struct bootstate *boot = (struct bootstate *) boot_raw;
|
||||
PyThreadState *alttstate, *tstate;
|
||||
PyThreadState *tstate;
|
||||
PyObject *res;
|
||||
|
||||
tstate = PyThreadState_New(boot->interp);
|
||||
PyEval_RestoreThread((void *)NULL);
|
||||
alttstate = PyThreadState_Swap(tstate);
|
||||
PyEval_AcquireThread(tstate);
|
||||
res = PyEval_CallObjectWithKeywords(
|
||||
boot->func, boot->args, boot->keyw);
|
||||
Py_DECREF(boot->func);
|
||||
@ -225,8 +224,7 @@ t_bootstrap(boot_raw)
|
||||
}
|
||||
else
|
||||
Py_DECREF(res);
|
||||
(void) PyThreadState_Swap(alttstate);
|
||||
(void) PyEval_SaveThread();
|
||||
PyEval_ReleaseThread(tstate);
|
||||
PyThreadState_Delete(tstate);
|
||||
exit_thread();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user