From 1a10cf81f749410848a309b399b9b69b319e14b7 Mon Sep 17 00:00:00 2001 From: John Fremlin Date: Sun, 31 May 2009 00:21:52 +0000 Subject: [PATCH] only check for timeouts once per second --- src/io/epoll.lisp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/io/epoll.lisp b/src/io/epoll.lisp index 2f387f1..5ee8b76 100644 --- a/src/io/epoll.lisp +++ b/src/io/epoll.lisp @@ -82,7 +82,7 @@ (with-shorthand-accessor (my epoll *global-epoll*) (my 'mux-del fd))) -(defun events-pending-p () +(defun-speedy events-pending-p () (not (mux-empty *global-epoll*))) @@ -102,7 +102,13 @@ (defun event-loop () (loop for timeout = (next-timeout) while (or timeout (events-pending-p)) do - (wait-for-next-event timeout))) + (wait-for-next-event timeout) + (let ((start-time (get-universal-time))) + (loop + while (events-pending-p) + do + (wait-for-next-event 1) + thereis (/= start-time (get-universal-time)))))) (defun event-loop-reset () (mux-close-all *global-epoll*)