#!/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} #### #!/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 join("\t",($_,$resolved{$_}->{2},$resolved{$_}->{3},$resolved{$_ +}->{4})), $/ for sort { $b <=> $a } keys %resolved; sub do { my %sh; $sh{2} = $_[0] * $_[0]; $sh{3} = $_[0] * $_[0] * $_[0]; $sh{4} = $_[0] * $_[0] * $_[0] * $_[0]; $resolved{$_[0]} = \%sh; $_[0]; } sub monitor {return 1} #### Cannot find result for streaming job 1 at /usr/lib/perl5/site_perl/5.8.8/Thread/Pool.pm (loaded on demand from offset 20056 for 2428 bytes) line 769.