The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Parallel::Forker::Process - Single parallel fork process object

SYNOPSIS

   $obj->run;
   $obj->poll;
   $obj->kill(<"SIGNAL">);
   $obj->kill_tree(<"SIGNAL">);

DESCRIPTION

Manage a single process under the control of Parallel::Forker.

Processes are created by calling a Parallel::Forker object's schedule method, and retrieved by various methods in that class.

Processes transition over 6 states. They begin in idle state, and are transitioned by the user into ready state. As their dependencies complete, Parallel::Forker transitions them to the runable state. As the Parallel::Forker object's max_proc limit permits, they transition to the running state, and get executed. On completion, they transition to the done state. If a process depends on another process, and that other process fails, the dependant process transitions to the parerr (parent error) state, and is never run.

METHODS

forkref

Return the parent Parallel::Forker object this process belongs to.

is_done

Returns true if the process is in the done state.

is_idle

Returns true if the process is in the idle state.

is_parerr

Returns true if the process is in the parent error state.

is_ready

Returns true if the process is in the ready state.

is_reapable

Returns true if the process is reapable (->reap may be called on it).

is_runable

Returns true if the process is in the runable state.

is_running

Returns true if the process is in the running state.

kill(<signal>)

Send the specified signal to the process if it is running. If no signal is specified, send a SIGKILL (9).

kill_tree(<signal>)

Send the specified signal to the process (and its subchildren) if it is running. If no signal is specified, send a SIGKILL (9).

kill_tree_all(<signal>)

Send a signal to this child (and its subchildren) if it is running. If no signal is specified, send a SIGKILL (9).

label

Return the label of the process, if any, else undef.

name

Return the name of the process.

pid

Return the process ID if this job is running, else undef.

poll

Check the process for activity, invoking callbacks if needed. Generally Parallel::Forker's object method poll() is used instead.

ready

Mark this process as being ready for execution when all run_after's are ready and CPU resources permit. When that occurs, run will be called on the process automatically.

reap

When the process has no other processes waiting for it, and the process is is_done or is_parerr, remove the data structures for it. This reclaims memory for when a large number of processes are being created, run, and destroyed.

run

Unconditionally move the process to the "running" state and start it.

run_after

Add a new (or list of) processes that must be completed before this process can be runnable. You may pass a process object (from schedule), a process name, or a process label. You may use "|" or "&" in a string to run this process after ANY processes exit, or after ALL exit (the default.) ! in front of a process name indicates to run if that process fails with bad exit status. ^ in front of a process indicates to run if that process succeeds OR fails.

state

Returns the name of the current state, 'idle', 'ready', 'runable', 'running', 'done' or 'parerr'. For forward compatibility, use the is_idle etc. methods instead of comparing this accessor's value to a constant string.

status

Return the exit status of this process if it has completed. The exit status will only be correct if a CHLD signal handler is installed, otherwise it may be undef.

status_ok

Return true if the exit status of this process was zero. Return false if not ok, or if the status has not been determined, or if the status was undef.

DISTRIBUTION

The latest version is available from CPAN and from https://www.veripool.org/parallel-forker.

Copyright 2002-2020 by Wilson Snyder. This package is free software; you can redistribute it and/or modify it under the terms of either the GNU Lesser General Public License Version 3 or the Perl Artistic License Version 2.0.

AUTHORS

Wilson Snyder <wsnyder@wsnyder.org>

SEE ALSO

Parallel::Forker