summaryrefslogtreecommitdiffstats
path: root/Modules/mmapmodule.c
diff options
context:
space:
mode:
authorShantanu <12621235+hauntsaninja@users.noreply.github.com>2022-10-10 22:14:31 (GMT)
committerGitHub <noreply@github.com>2022-10-10 22:14:31 (GMT)
commitf871e9a7bb4eb823da481b99052636763ec8e710 (patch)
treeffb1a5823edac61da495fe3af00cf02d52a717d7 /Modules/mmapmodule.c
parent6a757da080121c4add61931ae46389b3f3e990a1 (diff)
downloadcpython-f871e9a7bb4eb823da481b99052636763ec8e710.zip
cpython-f871e9a7bb4eb823da481b99052636763ec8e710.tar.gz
cpython-f871e9a7bb4eb823da481b99052636763ec8e710.tar.bz2
gh-44098: Release the GIL during mmap on Unix (GH-98146)
This seems pretty straightforward. The issue mentions other calls in mmapmodule that we could release the GIL on, but those are in methods where we'd need to be careful to ensure that something sensible happens if those are called concurrently. In prior art, note that #12073 released the GIL for munmap. In a toy benchmark, I see the speedup you'd expect from doing this. Automerge-Triggered-By: GH:gvanrossum
Diffstat (limited to 'Modules/mmapmodule.c')
-rw-r--r--Modules/mmapmodule.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/Modules/mmapmodule.c b/Modules/mmapmodule.c
index 5c05aa7..fdce783 100644
--- a/Modules/mmapmodule.c
+++ b/Modules/mmapmodule.c
@@ -1318,9 +1318,9 @@ new_mmap_object(PyTypeObject *type, PyObject *args, PyObject *kwdict)
}
}
- m_obj->data = mmap(NULL, map_size,
- prot, flags,
- fd, offset);
+ Py_BEGIN_ALLOW_THREADS
+ m_obj->data = mmap(NULL, map_size, prot, flags, fd, offset);
+ Py_END_ALLOW_THREADS
if (devzero != -1) {
close(devzero);