my $manager = new Parallel::ForkManager( 20 );
####
$manager->set_max_procs( $newMaximumProcs );
##
##
foreach my $command (@commands) {
$manager->start and next;
system( $command );
$manager->finish;
};
##
##
$manager->run_on_start(
sub {
my ($pid,$ident) = @_;
print "Starting processes $ident under process id $pid\n";
}
);
##
##
$manager->run_on_finish(
sub {
my ( $pid, $exit_code, $ident, $signal, $core ) = @_;
if ( $core ) {
print "Process $ident (pid: $pid) core dumped.\n";
} else {
print "Process $ident (pid: $pid) exited
print "with code $exit_code and signal $signal.\n";
}
}
);
##
##
$manager->wait_on_finish(
sub {
print "Waiting ... \n";
},
3
);