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.
This commit is contained in:
parent
d27a62deff
commit
6fd9bfb7b0
@ -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)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user