NAME

BGS - Background execution of subroutines in child processes.

SYNOPSIS

use BGS;
# $BGS::limit = 0;

my @foo;

foreach my $i (1 .. 2) {
  bgs_call {
    # child process
    return "Start $i";
  } bgs_back {
    # callback subroutine
    my $r = shift;
    push @foo, "End $i. Result: '$r'.\n";
  };
}

bgs_wait();

print foreach @foo;

MOTIVATION

The module was created when need to receive information from dozens of database servers in the shortest time appeared.

DESCRIPTION

bgs_call

Child process is created for each subroutine, that is prescribed with bgs_call, and it executes within this child process.

The subroutine must return either a scalar or a reference!

The answer of the subroutine passes to the callback subroutine as an argument. If a child process ended without bgs_call value returning, than bgs_back subprogram is called without argument.

bgs_call return vpid (virtual pid) of child process.

bgs_back

The callback subroutine is described in bgs_back block.

The answer of bgs_call subroutine passes to bgs_back subroutine as an argument.

bgs_wait

Call of bgs_wait() reduces to child processes answers wait and callback subroutines execution.

Call bgs_wait($vpid) to wait specific process.

bgs_break

kill all or specific child processes.

Call bgs_break($vpid) to kill specific process.

$BGS::limit

Set $BGS::limit to limit child processes count. Default is 0 (unlimited).

AUTHOR

Nick Kostyria

COPYRIGHT AND LICENSE

Copyright (C) 2011 by Nick Kostyria

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.8 or, at your option, any later version of Perl 5 you may have available.