Thread::Pool::Simple(3pm)

Thread::Pool::Simple3pm

A simple thread-pool implementation

Usage

  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.

Overview

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

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

Releases

9 releases since Debian 5.0 (Lenny); the text changed 5 times.

  1. 5.0
  2. 6.0
  3. 7–9
  4. 10
  5. 11
  6. 12–13

Author

Jianyuan Wu, <[email protected]>

From libthread-pool-simple-perl 0.25-4 in Debian 13 (Trixie). Parsed by carta from the page's man source.