Commit 39ff7bb0 authored by Victor Stinner's avatar Victor Stinner

Issue #20311: EpollSelector now also rounds the timeout towards zero, as

PollSelector.

This change is not really required in Python 3.4, since select.epoll.poll() now
rounds also correctly the timeout. But Guido van Rossum prefers to have exactly
the same selectors.py file in CPython and Tulip projects: "it's not harmful".
parent 060090df
...@@ -411,7 +411,14 @@ if hasattr(select, 'epoll'): ...@@ -411,7 +411,14 @@ if hasattr(select, 'epoll'):
return key return key
def select(self, timeout=None): def select(self, timeout=None):
timeout = -1 if timeout is None else max(timeout, 0) if timeout is None:
timeout = -1
elif timeout <= 0:
timeout = 0
else:
# epoll_wait() has a resolution of 1 millisecond, round away
# from zero to wait *at least* timeout seconds.
timeout = math.ceil(timeout * 1e3) * 1e-3
max_ev = len(self._fd_to_key) max_ev = len(self._fd_to_key)
ready = [] ready = []
try: try:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment