IPC-QWorker
view release on metacpan or search on metacpan
lib/IPC/QWorker.pm view on Meta::CPAN
}
$self->_get_ready_workers();
}
$worker = shift(@{$self->{'_ready_workers'}});
$worker->send_entry($qentry);
}
}
}
sub _get_busy_workers {
my $self = shift();
my @result;
my $worker;
foreach $worker (@{$self->{'_workers'}}) {
if(!$worker->{'ready'}) {
push(@result, $worker);
}
}
return(@result);
}
# will block till all workers are finished
sub flush_queue {
my $self = shift();
my @busy_workers;
my $select = IO::Select->new();
while(scalar(@busy_workers = $self->_get_busy_workers())) {
if ($IPC::QWorker::DEBUG) {
print STDERR "still " . scalar(@busy_workers) . " busy workers...\n";
}
$self->_get_ready_workers();
}
}
sub stop_workers {
my $self = shift;
my $worker;
# may be we could also use signals here
( run in 0.288 second using v1.01-cache-2.11-cpan-87723dcf8b7 )