AnyEvent-Fork-Pool
view release on metacpan or search on metacpan
$start_worker = sub {
my $proc = [0, 0, undef]; # load, index, rpc
$proc->[2] = $template
->fork
->AnyEvent::Fork::RPC::run ($function,
@rpc,
on_event => sub {
if (@_ == 3 && $_[0] eq $magic0 && $_[2] eq $magic1) {
$destroy_guard if 0; # keep it alive
$_[1] eq "quit" and $stop_worker->($proc);
return;
}
&$on_event;
},
)
;
my $shutdown_guard = Guard::guard {
$shutdown = 1;
$scheduler->();
};
$start_worker->()
while @pool < $idle;
sub {
$shutdown_guard if 0; # keep it alive
$start_worker->()
unless @pool;
push @queue, [@_];
$scheduler->();
}
}
=item $pool->(..., $cb->(...))
( run in 0.485 second using v1.01-cache-2.11-cpan-df04353d9ac )