diff options
-rw-r--r-- | Changes | 1 | ||||
-rw-r--r-- | ev.h | 2 | ||||
-rw-r--r-- | ev.pod | 14 |
3 files changed, 17 insertions, 0 deletions
@@ -4,6 +4,7 @@ Revision history for libev, a high-performance and full-featured event loop. - fix a 64 bit overflow issue in the select backend, by using fd_mask instead of int for the mask. - rename internal sighandler to avoid clash with very old perls. + - add ev_async_pending. 3.1 Thu Mar 13 13:45:22 CET 2008 - implement ev_async watchers. @@ -326,6 +326,8 @@ typedef struct ev_async EV_ATOMIC_T sent; /* private */ } ev_async; + +# define ev_async_pending(w) (((w)->sent + 0) #endif /* the presence of this union forces similar struct layout */ @@ -2290,6 +2290,20 @@ This call incurs the overhead of a syscall only once per loop iteration, so while the overhead might be noticable, it doesn't apply to repeated calls to C<ev_async_send>. +=item bool = ev_async_pending (ev_async *) + +Returns a non-zero value when C<ev_async_send> has been called on the +watcher but the event has not yet been processed (or even noted) by the +event loop. + +C<ev_async_send> sets a flag in the watcher and wakes up the loop. When +the loop iterates next and checks for the watcher to have become active, +it will reset the flag again. C<ev_async_pending> can be used to very +quickly check wether invoking the loop might be a good idea. + +Not that this does I<not> check wether the watcher itself is pending, only +wether it has been requested to make this watcher pending. + =back |