Heray-Was-Here
Server : Apache
System : Linux vps103298.mylogin.co 4.18.0-513.11.1.el8_9.x86_64 #1 SMP Wed Jan 17 02:00:40 EST 2024 x86_64
User : calvet ( 273824)
PHP Version : 7.4.33
Disable Function : NONE
Directory :  /usr/share/doc/perl-Parallel-ForkManager/examples/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //usr/share/doc/perl-Parallel-ForkManager/examples/callback_data.pl
use strict;
use warnings;

use Parallel::ForkManager;

my $max_procs = 2;
my @names = qw( Fred Jim );

my $pm = Parallel::ForkManager->new($max_procs, @ARGV);

# Setup a callback for when a child finishes up so we can
# get it's exit code and any data it collected
$pm->run_on_finish( sub {
  my ($pid, $exit_code, $ident, $exit_signal, $core_dump, $data_structure_reference) = @_;
  print "$ident just got out of the pool ".
    "with exit code: $exit_code and data: @$data_structure_reference\n";
});

$pm->run_on_start( sub {
  my ($pid,$ident)=@_;
  print "$ident started\n";
});

foreach my $child ( 0 .. $#names ) {
  my $pid = $pm->start($names[$child]) and next;

  # This code is the child process
  # We can do here anything and obtain any data.
  # The result can be any array or hash.
  my @result = ($names[$child], length $names[$child]);
  sleep 1+rand(3);

  # pass an exit code and data stucture to finish
  $pm->finish($child, \@result );
}

#print "Waiting for Children...\n";
$pm->wait_all_children;
print "Everybody is out of the pool!\n";



Hry