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 )