Simple Parallel::ForkManager pool
Fork a fixed number of workers and wait for them to finish.
18th August 2026
use Parallel::ForkManager;
my $max_threads = 5;
my $total_threads = 25;
my $pm = Parallel::ForkManager->new($max_threads);
sub actually_do_something {
my ($c) = @_;
print "Thread number: $c\n";
sleep 5;
}
for my $i (0 .. $total_threads) {
my $pid = $pm->start and next;
actually_do_something($i);
$pm->finish;
}
$pm->wait_all_children;
Caveats
Needs Parallel::ForkManager.