Thread::Pool::Simple(3) A simple thread-pool implementation


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.


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


Jianyuan Wu, <[email protected]>


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.