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 <[email protected]>

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.