Coro::Timer - timers and timeouts, independent of any event loop
use Coro::Timer qw(sleep timeout); # nothing exported by default sleep 10;
This package implements a simple timer callback system which works independent of the event loop mechanism used.
This function will wake up the current coroutine after $seconds
seconds and sets $flag to true (it is false initially). If $flag goes
out of scope earlier nothing happens. This is used to implement the
timed_down, timed_wait etc. primitives. It is used like this:
sub timed_wait {
my $timeout = Coro::Timer::timeout 60;
while (condition false) {
Coro::schedule; # wait until woken up or timeout
return 0 if $timeout; # timed out
}
return 1; # condition satisfied
}
This function works like the built-in sleep, except maybe more precise and, most important, without blocking other coroutines.
Marc Lehmann <schmorp@schmorp.de> http://home.schmorp.de/