@ -575,6 +575,18 @@ change as long as callbacks are being processed, and this is also the base
time used for relative timers. You can treat it as the timestamp of the
event occurring (or more correctly, libev finding out about it).
=item ev_now_update (loop)
Establishes the current time by querying the kernel, updating the time
returned by C<ev_now ()> in the progress. This is a costly operation and
is usually done automatically within C<ev_loop ()>.
This function is rarely useful, but when some event callback runs for a
very long time without entering the event loop, updating libev's idea of
the current time is a good idea.
See also "The special problem of time updates" in the C<ev_timer> section.
=item ev_loop (loop, int flags)
Finally, this is it, the event handler. This function usually is called
@ -1205,10 +1217,11 @@ order of execution is undefined.
=head3 The special problem of time updates
Requesting the current time is a costly operation (it usually takes at
least two syscalls): EV therefore updates it's idea of the current time
only before and after C<ev_loop> polls for new events, which causes the
difference between C<ev_now ()> and C<ev_time ()>.
Establishing the current time is a costly operation (it usually takes at
least two system calls): EV therefore updates its idea of the current
time only before and after C<ev_loop> polls for new events, which causes
a growing difference between C<ev_now ()> and C<ev_time ()> when handling
lots of events.
The relative timeouts are calculated relative to the C<ev_now ()>
time. This is usually the right thing as this timestamp refers to the time
@ -1218,6 +1231,10 @@ timeout on the current time, use something like this to adjust for this:
ev_timer_set (&timer, after + ev_now () - ev_time (), 0.);
If the event loop is suspended for a long time, one can also force an
update of the time returned by C<ev_now ()> by calling C<ev_now_update
=head3 Watcher-Specific Functions and Data Members