Skip to content

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.