Proc-ParallelLoop
view release on metacpan or search on metacpan
lib/Proc/ParallelLoop.pm view on Meta::CPAN
###########################################################################
# Global Variables
use vars qw($Queue $Count $Handle_Count %Proc_Order %Dead_Procs
%Proc_Out %Proc_Err %Proc_Handles %Proc_Handle_Num
@Exit_Status @Reusable_Handles $Readset $Max_Workers);
###########################################################################
# Subroutine prototypes
sub pardo(&&&;$);
sub pareach($&;$);
sub init_state();
sub wait_for_available_queue($);
sub make_names();
sub dispatch($$);
sub cleanup_worker($);
sub reclaim_worker_io($);
sub check_for_death();
sub handle_event();
sub gather_all_output();
lib/Proc/ParallelLoop.pm view on Meta::CPAN
sequentially.
=cut
############################################# main pod documentation end ##
# Public methods follow.
###########################################################################
# pardo -- Like a for loop, but with parallelization.
sub pardo(&&&;$) {
my ($test, $update, $routine, $options) = (shift, shift, shift, shift);
my $result;
init_state();
if (defined $options->{"Max_Workers"}) {
$Max_Workers=$options->{"Max_Workers"};
}
# Turn off buffering;
my $oldfh = select(STDERR); $| = 1;
select($oldfh); $| = 1;
( run in 0.347 second using v1.01-cache-2.11-cpan-49f99fa48dc )