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 AND LICENSE
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.