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