Thread::Pool::Simple.3pm

Langue: en

Version: 2007-05-24 (debian - 07/07/09)

Section: 3 (Bibliothèques de fonctions)

NAME

Thread::Pool::Simple - A simple thread-pool implementation

SYNOPSIS

   use Thread::Pool::Simple;
 
   my $pool = Thread::Pool::Simple->new(
                  min => 3,           # at least 3 workers
                  max => 5,           # at most 5 workers
                  load => 10,         # increase worker if on average every worker has 10 jobs waiting
                  init => [\&init_handle, $arg1, $arg2, ...]   # run before creating worker thread
                  pre => [\&pre_handle, $arg1, $arg2, ...]   # run after creating worker thread
                  do => [\&do_handle, $arg1, $arg2, ...]     # job handler for each worker
                  post => [\&post_handle, $arg1, $arg2, ...] # run before worker threads end
                  passid => 1,        # whether to pass the job id as the first argument to the &do_handle
                  lifespan => 10000,  # total jobs handled by each worker
                );
 
   my ($id1) = $pool->add(@arg1); # call in list context
   my $id2 = $pool->add(@arg2);   # call in scalar conetxt
   $pool->add(@arg3)              # call in void context
 
   my @ret = $pool->remove($id1); # get result (block)
   my $ret = $pool->remove_nb($id2); # get result (no block)
 
   $pool->cancel($id1);           # cancel the job
   $pool->cancel_all();           # cancel all jobs
 
   $pool->join();                 # wait till all jobs are done
   $pool->detach();               # don't wait.
 
 

DESCRIPTION

"Thread::Pool::Simple" provides a simple thread-pool implementaion without external dependencies outside core modules.

Jobs can be submitted to and handled by multi-threaded `workers' managed by the pool.

AUTHOR

Jianyuan Wu, <jwu@cpan.org> Copyright 2007 by Jianyuan Wu

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