fixes gh-96078: os.sched_yield release the GIL while calling sched_yield(2). (gh-97965)

This commit is contained in:
Dong-hee Na 2022-10-07 07:57:37 +09:00 committed by GitHub
parent e1c4d56fdd
commit b9d2e81716
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 1 deletions

View File

@ -0,0 +1,2 @@
:func:`os.sched_yield` now release the GIL while calling sched_yield(2).
Patch by Dong-hee Na.

View File

@ -7075,8 +7075,13 @@ static PyObject *
os_sched_yield_impl(PyObject *module) os_sched_yield_impl(PyObject *module)
/*[clinic end generated code: output=902323500f222cac input=e54d6f98189391d4]*/ /*[clinic end generated code: output=902323500f222cac input=e54d6f98189391d4]*/
{ {
if (sched_yield()) int result;
Py_BEGIN_ALLOW_THREADS
result = sched_yield();
Py_END_ALLOW_THREADS
if (result < 0) {
return posix_error(); return posix_error();
}
Py_RETURN_NONE; Py_RETURN_NONE;
} }