From 6fd9bfb7b062412ad9b57a5eea0f880aee3f450b Mon Sep 17 00:00:00 2001 From: Ben Noordhuis Date: Mon, 21 May 2012 17:32:38 +0200 Subject: [PATCH] unix: fix event loop block, prepare/check invoke Don't block in epoll_wait() / kevent() / etc. syscall unless there are active handles. If there are only active requests, do a non-blocking poll. Likewise, don't run the prepare and check watchers unless there are active handles *or* requests. --- src/unix/core.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/unix/core.c b/src/unix/core.c index 6d33d188..c4b25e9a 100644 --- a/src/unix/core.c +++ b/src/unix/core.c @@ -210,12 +210,12 @@ static int uv__run(uv_loop_t* loop) { */ uv__run_pending(loop); - uv__run_prepare(loop); - if (uv__has_active_handles(loop) || uv__has_active_reqs(loop)) - uv__poll(loop, 1); - - uv__run_check(loop); + if (uv__has_active_handles(loop) || uv__has_active_reqs(loop)) { + uv__run_prepare(loop); + uv__poll(loop, uv__has_active_handles(loop)); + uv__run_check(loop); + } return uv__has_pending_handles(loop) || uv__has_active_handles(loop)