NAME

Parallel::Async::Chain - task chain manager.

METHODS

my @results = $chain->recv(@args)

Execute tasks on child processes and wait for receive return values.

    # create new task
    my $task_add = async {
        my ($x, $y) = @_;
        return $x + $y;
    };
    my $task_sub = async {
        my ($x, $y) = @_;
        return $x - $y;
    };
    my $task_times = async {
        my ($x, $y) = @_;
        return $x * $y;
    };

    my $chain = $task_add->join($task_sub)->join($task_times);
    my ($res_add, $res_sub, $res_times) = $chain->recv(10, 20);
    say $res_add->[0];   ##  30
    say $res_sub->[0];   ## -10
    say $res_times->[0]; ## 200
my @pids = $chain->run(@args)

Execute tasks on child processes.

    # create new task
    my $task_add = async {
        my ($x, $y) = @_;
        return $x + $y;
    };
    my $task_sub = async {
        my ($x, $y) = @_;
        return $x - $y;
    };
    my $task_times = async {
        my ($x, $y) = @_;
        return $x * $y;
    };

    my $chain = $task_add->join($task_sub)->join($task_times);
    my @pids = $chain->run(10, 20);
my @pids = $chain->daemonize(@args)

Execute tasks on daemonized processes.

    # create new task
    my $task_add = async {
        my ($x, $y) = @_;
        return $x + $y;
    };
    my $task_sub = async {
        my ($x, $y) = @_;
        return $x - $y;
    };
    my $task_times = async {
        my ($x, $y) = @_;
        return $x * $y;
    };

    my $chain = $task_add->join($task_sub)->join($task_times);
    my @pids = $chain->daemonize(10, 20);
$chain->join($task1, ...);

Join multiple tasks, like Parallel::Async::Task#join.

$task->reset;

Reset the execution status of all tasks, like Parallel::Async::Task#reset.

$task->clone;

Clone and reset the execution status of all tasks, like Parallel::Async::Task#clone.

AUTHOR

karupanerura <karupa@cpan.org>