mirror of
https://github.com/python/cpython.git
synced 2025-07-24 11:44:31 +00:00
Issue #11382: Trivial system calls, such as dup() or pipe(), needn't
release the GIL. Patch by Charles-François Natali.
This commit is contained in:
parent
00bdbe1d97
commit
877509aef4
2 changed files with 3 additions and 14 deletions
|
@ -3083,9 +3083,7 @@ posix_getpriority(PyObject *self, PyObject *args)
|
|||
if (!PyArg_ParseTuple(args, "ii", &which, &who))
|
||||
return NULL;
|
||||
errno = 0;
|
||||
Py_BEGIN_ALLOW_THREADS
|
||||
retval = getpriority(which, who);
|
||||
Py_END_ALLOW_THREADS
|
||||
if (errno != 0)
|
||||
return posix_error();
|
||||
return PyLong_FromLong((long)retval);
|
||||
|
@ -3105,9 +3103,7 @@ posix_setpriority(PyObject *self, PyObject *args)
|
|||
|
||||
if (!PyArg_ParseTuple(args, "iii", &which, &who, &prio))
|
||||
return NULL;
|
||||
Py_BEGIN_ALLOW_THREADS
|
||||
retval = setpriority(which, who, prio);
|
||||
Py_END_ALLOW_THREADS
|
||||
if (retval == -1)
|
||||
return posix_error();
|
||||
Py_RETURN_NONE;
|
||||
|
@ -6010,9 +6006,7 @@ posix_dup(PyObject *self, PyObject *args)
|
|||
return NULL;
|
||||
if (!_PyVerify_fd(fd))
|
||||
return posix_error();
|
||||
Py_BEGIN_ALLOW_THREADS
|
||||
fd = dup(fd);
|
||||
Py_END_ALLOW_THREADS
|
||||
if (fd < 0)
|
||||
return posix_error();
|
||||
return PyLong_FromLong((long)fd);
|
||||
|
@ -6031,9 +6025,7 @@ posix_dup2(PyObject *self, PyObject *args)
|
|||
return NULL;
|
||||
if (!_PyVerify_fd_dup2(fd, fd2))
|
||||
return posix_error();
|
||||
Py_BEGIN_ALLOW_THREADS
|
||||
res = dup2(fd, fd2);
|
||||
Py_END_ALLOW_THREADS
|
||||
if (res < 0)
|
||||
return posix_error();
|
||||
Py_INCREF(Py_None);
|
||||
|
@ -6525,9 +6517,7 @@ posix_pipe(PyObject *self, PyObject *noargs)
|
|||
HFILE read, write;
|
||||
APIRET rc;
|
||||
|
||||
Py_BEGIN_ALLOW_THREADS
|
||||
rc = DosCreatePipe( &read, &write, 4096);
|
||||
Py_END_ALLOW_THREADS
|
||||
if (rc != NO_ERROR)
|
||||
return os2_error(rc);
|
||||
|
||||
|
@ -6536,9 +6526,7 @@ posix_pipe(PyObject *self, PyObject *noargs)
|
|||
#if !defined(MS_WINDOWS)
|
||||
int fds[2];
|
||||
int res;
|
||||
Py_BEGIN_ALLOW_THREADS
|
||||
res = pipe(fds);
|
||||
Py_END_ALLOW_THREADS
|
||||
if (res != 0)
|
||||
return posix_error();
|
||||
return Py_BuildValue("(ii)", fds[0], fds[1]);
|
||||
|
@ -6546,9 +6534,7 @@ posix_pipe(PyObject *self, PyObject *noargs)
|
|||
HANDLE read, write;
|
||||
int read_fd, write_fd;
|
||||
BOOL ok;
|
||||
Py_BEGIN_ALLOW_THREADS
|
||||
ok = CreatePipe(&read, &write, NULL, 0);
|
||||
Py_END_ALLOW_THREADS
|
||||
if (!ok)
|
||||
return win32_error("CreatePipe", NULL);
|
||||
read_fd = _open_osfhandle((Py_intptr_t)read, 0);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue