use strict;
use threads;
use threads::shared;
use MCE::Flow;
use Math::BigInt;
use feature qw(say);
my %result : shared;
mce_flow_s { chunk_size => 1, max_workers => 4 }, \&process, 1, 1000;
for my $key ( sort{ $a <=> $b } keys %result ) {
say "$key => ", $result{ $key }->bstr;
}
sub process {
my $number = $_;
my $factorial = factorial($number);
$result{$number} = shared_clone( $factorial ); ## clone the object
}
sub factorial {
my $number = shift;
Math::BigInt->bfac($number);
}
####
use strict;
use MCE::Flow;
use MCE::Shared;
use Math::BigInt;
use feature qw(say);
my %result : Shared;
mce_flow_s { chunk_size => 1, max_workers => 4 }, \&process, 1, 1000;
for my $key ( sort{ $a <=> $b } keys %result ) {
say "$key => ", $result{ $key }->bstr;
}
sub process {
my $number = $_;
my $factorial = factorial($number);
$result{$number} = $factorial; # the object is shared automatically
}
sub factorial {
my $number = shift;
Math::BigInt->bfac($number);
}
##
##
MCE::Flow::init {
chunk_size => 1,
max_workers => 4,
};
mce_flow_s \&process, 1, 1000;