—package
Parallel::ForkManager::Child;
our
$AUTHORITY
=
'cpan:DLUX'
;
# ABSTRACT: role adopted by forked Parallel::ForkManager processes
$Parallel::ForkManager::Child::VERSION
=
'2.03'
;
use
strict;
use
warnings;
use
Carp;
use
Moo::Role;
sub
is_child { 1 }
sub
is_parent { 0 }
sub
start {
croak
"Cannot start another process while you are in the child process"
;
}
sub
finish {
my
(
$s
,
$x
,
$r
)=
@_
;
$s
->store(
$r
);
CORE::
exit
(
$x
|| 0);
}
1;
__END__
=pod
=encoding UTF-8
=head1 NAME
Parallel::ForkManager::Child - role adopted by forked Parallel::ForkManager processes
=head1 VERSION
version 2.03
=head1 SYNOPSIS
use 5.10.0;
use Parallel::ForkManager;
my $fm = Parallel::ForkManager->new;
say "parent does not consume the child role: ", $fm->does('Parallel::ForkManager::Child');
$fm->start_child(sub{
sleep $_;
say "but the child does: ", $fm->does('Parallel::ForkManager::Child');
say "child $_ says hi!"
}) for 1..3;
=head1 DESCRIPTION
When the parent L<Parallel::ForkManager> object forks a child process,
its forked incarnation consumes this role. The role doesn't do much: it
changes the returning values of C<is_child> and C<is_parent> in the way you'd expect,
change C<start> so that it'd die if called from within the child, and change
the implementation of C<finish> to potentially send data back to the parent process.
=head1 AUTHORS
=over 4
=item *
dLux (Szabó, Balázs) <dlux@dlux.hu>
=item *
Yanick Champoux <yanick@cpan.org>
=item *
Gabor Szabo <gabor@szabgab.com>
=back
=head1 COPYRIGHT AND LICENSE
This software is copyright (c) 2024, 2015 by Balázs Szabó.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
=cut