summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDong-hee Na <donghee.na@python.org>2022-10-06 22:57:37 (GMT)
committerGitHub <noreply@github.com>2022-10-06 22:57:37 (GMT)
commitb9d2e8171696514e9226164005f7bf24bf69e66d (patch)
treeed9ff8889f5327600d46a614b8bd41b5cde4e891
parente1c4d56fdde28728c37de855edbb463fa0d7f95d (diff)
downloadcpython-b9d2e8171696514e9226164005f7bf24bf69e66d.zip
cpython-b9d2e8171696514e9226164005f7bf24bf69e66d.tar.gz
cpython-b9d2e8171696514e9226164005f7bf24bf69e66d.tar.bz2
fixes gh-96078: os.sched_yield release the GIL while calling sched_yield(2). (gh-97965)
-rw-r--r--Misc/NEWS.d/next/Core and Builtins/2022-10-06-15-45-57.gh-issue-96078.fS-6mU.rst2
-rw-r--r--Modules/posixmodule.c7
2 files changed, 8 insertions, 1 deletions
diff --git a/Misc/NEWS.d/next/Core and Builtins/2022-10-06-15-45-57.gh-issue-96078.fS-6mU.rst b/Misc/NEWS.d/next/Core and Builtins/2022-10-06-15-45-57.gh-issue-96078.fS-6mU.rst
new file mode 100644
index 0000000..d1f949c
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and Builtins/2022-10-06-15-45-57.gh-issue-96078.fS-6mU.rst
@@ -0,0 +1,2 @@
+:func:`os.sched_yield` now release the GIL while calling sched_yield(2).
+Patch by Dong-hee Na.
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index cbdc259..a72d577 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -7075,8 +7075,13 @@ static PyObject *
os_sched_yield_impl(PyObject *module)
/*[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();
+ }
Py_RETURN_NONE;
}