Coro::Timer.3pm

Langue: en

Autres versions - même langue

Version: 2010-05-17 (ubuntu - 24/10/10)

Section: 3 (Bibliothèques de fonctions)

NAME

Coro::Timer - timers and timeouts, independent of any event loop

SYNOPSIS

  use Coro::Timer qw(sleep timeout);
  # nothing exported by default
 
  sleep 10;
 
 

DESCRIPTION

This package implements a simple timer callback system which works independent of the event loop mechanism used.
$flag = timeout $seconds;
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
    }
 
 
sleep $seconds
This function works like the built-in sleep, except maybe more precise and, most important, without blocking other coroutines.

AUTHOR

  Marc Lehmann <schmorp@schmorp.de>
  http://home.schmorp.de/