use strict; use warnings; use if $^O eq 'MSWin32', 'threads'; use Time::HiRes 'time'; use MCE::Hobo; my $tid = 0; sub CLONE { $tid = threads->tid() if $INC{'threads.pm'}; } sub mhobo ($$&) { my ($count, $max, $code) = @_; foreach my $c (1 .. $count) { MCE::Hobo->waitone() unless $c <= $max; exit(255) unless defined (my $h = MCE::Hobo->create($code, $c)); } MCE::Hobo->waitall(); } my $start = time; mhobo(12, 4, sub { my $x = 1e8; $x-- while $x; print "$$.$tid\n"; }); printf "Seconds: %0.03f\n", time - $start;