#!/usr/bin/perl use common::sense; use AnyEvent; use Data::Dumper; sub do { my $iter = shift; my $cv = AnyEvent->condvar; my ($n, $t, $d, $e); ($n, $t) = (AnyEvent->now, AnyEvent->time); $d = $t-$n; say "$iter start timer diff = $d, time = $t, now = $n"; my $timer = AnyEvent->timer( after => 2, cb => sub { warn "Timer\n"; $cv->send }, ); $cv->recv; ($n, $t, $e) = (AnyEvent->now, AnyEvent->time, AnyEvent->time - $t); $d = $t-$n; say "$iter got timer diff = $d, elapsed = $e, time = $t, now = $n"; } for (1..4) { &do($_); sleep(5); warn "\n"; } #### 1 start timer diff = 0.000634908676147461, time = 1427985442.36442, now = 1427985442.36378 Timer 1 got timer diff = 7.31945037841797e-05, elapsed = 2.00119400024414, time = 1427985444.36561, now = 1427985444.36554 2 start timer diff = 5.00071620941162, time = 1427985449.36625, now = 1427985444.36554 Timer 2 got timer diff = 0.000667810440063477, elapsed = 0.00254702568054199, time = 1427985449.3688, now = 1427985449.36813 3 start timer diff = 5.00153064727783, time = 1427985454.36966, now = 1427985449.36813 Timer 3 got timer diff = 4.67300415039062e-05, elapsed = 0.00129199028015137, time = 1427985454.37095, now = 1427985454.3709 4 start timer diff = 5.00066781044006, time = 1427985459.37157, now = 1427985454.3709 Timer 4 got timer diff = 0.000627279281616211, elapsed = 0.00244379043579102, time = 1427985459.37401, now = 1427985459.37338