NAME
    Sys::ForkQueue - Run any number of jobs in a controlled manner in
    parallel.

SYNOPSIS
            use Sys::ForkQueue;
            my @jobs = qw(1 2 3 4 5 6 7 8 9 10);
            my $Queue = Sys::ForkQueue::->new({
                    'jobs' => \@jobs,
                    'code' => \&worker,
                    'logger' => Log::Tree::->new(),
            });
            $Queue->run();

            sub worker { ... }

DESCRIPTION
    This class implements a job controller that can run any number of jobs
    with configurable parllelism.

ATTRIBUTES
  chdir
    Change to this directory after fork.

    If the given directory does not exist, change to /.

  umask
    Set this umask after fork.

  jobs
    Must contain a list of job names. Each will be passed to the CODEREF in
    $self->code() when it's runnable.

  code
    The CODEREF. This will called for every job in the list. Ths first
    argument will be the job name. The second one will be $self->args()
    which is an hashref.

  args
    This will be passed to every invocation of $self->code().

  concurrency
    Run this many jobs in parallel.

  redirect_output
    Redirect all output to this file.

  chdir
    Change to this directory after fork()ing.

  setsid
    Call setsid after fork().

  delayedfork
    Sleep for a brief time after fork. Set this to false if you plan to run
    many short lived jobs.

NAME
    Sys::ForkQueue - Run any number of jobs in a controlled manner in
    parallel.

SUBROUTINES/METHODS
  run
    Run all enqueud jobs.

  EAGAIN
    Imported from Errno.

  SIGTERM
    Imported from POSIX.

  WNOHANG
    Imported from POSIX.

    1; # End of Sys::ForkQueue

AUTHOR
    Dominik Schulz <tex@cpan.org>

COPYRIGHT AND LICENSE
    This software is copyright (c) 2012 by Dominik Schulz.

    This is free software; you can redistribute it and/or modify it under
    the same terms as the Perl 5 programming language system itself.

