1package App::Netdisco::Util::MCE; 2 3use strict; 4use warnings; 5 6use MCE::Util (); 7 8use base 'Exporter'; 9our @EXPORT = qw/prctl parse_max_workers/; 10 11sub prctl { $0 = shift } 12 13sub parse_max_workers { 14 my $max = shift; 15 return 0 if !defined $max; 16 17 if ($max =~ /^auto(?:$|\s*([\-\+\/\*])\s*(.+)$)/i) { 18 my $ncpu = MCE::Util::get_ncpu() || 0; 19 20 if ($1 and $2) { 21 local $@; $max = eval "int($ncpu $1 $2 + 0.5)"; 22 } 23 } 24 25 return $max || 0; 26} 27 281; 29