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

NAME

IPC::QWorker - processing a queue in parallel

VERSION

version 0.08

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();

EXPORT

None by default.

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).

SEE ALSO

  perl, POSIX, Storable, IO::Select

AUTHOR

Markus Benning <ich@markusbenning.de>

COPYRIGHT AND LICENSE

This software is copyright (c) 2013 by Markus Benning <ich@markusbenning.de>.

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