use strict;
use warnings;
use AnyEvent;
use AnyEvent::FIFO;
my $cv = AnyEvent::condvar;
my $fifo = AnyEvent::FIFO->new(
max_active => 1, # max "concurrent" callbacks to execute per slot
);
my @q1 = (9,8,7,6,5,4,3,2,1);
my @q2 = qw(a b c d e f g h i);
foreach my $item (@q1) { $fifo->push( "number_queue", \&callback1, $it
+em); }
foreach my $item (@q2) { $fifo->push( "letter_queue", \&callback2, $it
+em); }
#do other async stuff here...
$cv->recv;
my ($q1t,$q2t);
sub callback1
{
my ($guard,$item) = @_;
$q1t = AnyEvent->timer(after=>1, interval => 0, cb => sub {
print "Got $item\n";
undef $guard;
});
}
sub callback2
{
my ($guard,$item) = @_;
$q2t = AnyEvent->timer(after=>1, interval => 0, cb => sub {
print "Got $item\n";
undef $guard;
});
}
|