|
|
|
@ -1757,6 +1757,36 @@ If the event loop is suspended for a long time, you can also force an
|
|
|
|
|
update of the time returned by C<ev_now ()> by calling C<ev_now_update
|
|
|
|
|
()>.
|
|
|
|
|
|
|
|
|
|
=head3 The special problems of suspended animation
|
|
|
|
|
|
|
|
|
|
When you leave the server world it is quite customary to hit machines that
|
|
|
|
|
can suspend/hibernate - what happens to the clocks during such a suspend?
|
|
|
|
|
|
|
|
|
|
Some quick tests made with a Linux 2.6.28 indicate that a suspend freezes
|
|
|
|
|
all processes, while the clocks (C<times>, C<CLOCK_MONOTONIC>) continue
|
|
|
|
|
to run until the system is suspended, but they will not advance while the
|
|
|
|
|
system is suspended. That means, on resume, it will be as if the program
|
|
|
|
|
was frozen for a few seconds, but the suspend time will not be counted
|
|
|
|
|
towards C<ev_timer> when a monotonic clock source is used. The real time
|
|
|
|
|
clock advanced as expected, but if it is used as sole clocksource, then a
|
|
|
|
|
long suspend would be detected as a time jump by libev, and timers would
|
|
|
|
|
be adjusted accordingly.
|
|
|
|
|
|
|
|
|
|
I would not be surprised to see different behaviour in different between
|
|
|
|
|
operating systems, OS versions or even different hardware.
|
|
|
|
|
|
|
|
|
|
The other form of suspend (job control, or sending a SIGSTOP) will see a
|
|
|
|
|
time jump in the monotonic clocks and the realtime clock. If the program
|
|
|
|
|
is suspended for a very long time, and monotonic clock sources are in use,
|
|
|
|
|
then you can expect C<ev_timer>s to expire as the full suspension time
|
|
|
|
|
will be counted towards the timers. When no monotonic clock source is in
|
|
|
|
|
use, then libev will again assume a timejump and adjust accordingly.
|
|
|
|
|
|
|
|
|
|
It might be beneficial for this latter case to call C<ev_suspend>
|
|
|
|
|
and C<ev_resume> in code that handles C<SIGTSTP>, to at least get
|
|
|
|
|
deterministic behaviour in this case (you can do nothing against
|
|
|
|
|
C<SIGSTOP>).
|
|
|
|
|
|
|
|
|
|
=head3 Watcher-Specific Functions and Data Members
|
|
|
|
|
|
|
|
|
|
=over 4
|
|
|
|
|