#!/usr/bin/perl use strict; use warnings; use Thread::Pool; my %resolved : shared; my $pool = Thread::Pool->new( { workers => 3, do => \&do, monitor => \&monitor, } ); $pool->job($_) for 1 .. 100; $pool->shutdown; print $_, "\t", $resolved{$_}, $/ for sort { $b <=> $a } keys %resolved; sub do { $resolved{$_[0]} = $_[0] * $_[0]; $_[0]; } sub monitor {return 1}