PEP 475: on EINTR, retry the function even if the timeout is equals to zero

Retry:

* signal.sigtimedwait()
* threading.Lock.acquire()
* threading.RLock.acquire()
* time.sleep()
This commit is contained in:
Victor Stinner 2015-03-30 21:33:51 +02:00
parent f70e1ca0fc
commit 6aa446cf03
3 changed files with 3 additions and 3 deletions

View File

@ -84,7 +84,7 @@ acquire_timed(PyThread_type_lock lock, _PyTime_t timeout)
/* Check for negative values, since those mean block forever.
*/
if (timeout <= 0) {
if (timeout < 0) {
r = PY_LOCK_FAILURE;
}
}

View File

@ -1011,7 +1011,7 @@ signal_sigtimedwait(PyObject *self, PyObject *args)
monotonic = _PyTime_GetMonotonicClock();
timeout = deadline - monotonic;
if (timeout <= 0)
if (timeout < 0)
break;
} while (1);

View File

@ -1455,7 +1455,7 @@ pysleep(_PyTime_t secs)
monotonic = _PyTime_GetMonotonicClock();
secs = deadline - monotonic;
if (secs <= 00)
if (secs < 0)
break;
/* retry with the recomputed delay */
} while (1);