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

NAME

IPC::QWorker - Perl extension for processing a queue in parallel

SYNOPSIS

  my $qworker = IPC::QWorker->new();
  
  $qworker->create_workers(10,
          'dump' => sub { my $ctx = shift();
                                                        print $$.": ".Dumper(@_)."\n";
                                                         $ctx->{'count'}++; },
          '_init' => sub { my $ctx = shift();   
                                                        $ctx->{'count'} = 0 ; },
          '_destroy' => sub { my $ctx = shift();
                                                        print $$.": did ".$ctx->{'count'}." operations!\n"; }
  );
          
  foreach $i (1..120) {
          $qworker->push_queue(IPC::QWorker::WorkUnit->new(
                  'cmd' => 'dump',
                  'params' => $i,
          ));
  }
  
  $qworker->process_queue();

        # wait till queue is emtpy
  $qworker->flush_queue();
        # then stop all workers
  $qworker->stop_workers();

ABSTRACT

  This Module creates a group of child processes and feeds them with data
  from a queue.

DESCRIPTION

  With this module you can fork a few child processes which know a few
  function calls you define while creating them.
  Later you can pass command with parameters into the queue which is
  distributed across the child processes thru pipes(with the Storable module).

EXPORT

None by default.

SEE ALSO

  perl, POSIX, Storable, IO::Select

AUTHOR

Markus Benning, <me@w3r3wolf.de>

COPYRIGHT AND LICENSE

Copyright 2013 by Markus Benning <me@w3r3wolf.de>

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