.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "Simple 3pm" .TH Simple 3pm "2021-01-05" "perl v5.32.0" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" Thread::Pool::Simple \- A simple thread\-pool implementation .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 1 \& 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 => [\e&init_handle, $arg1, $arg2, ...] # run before creating worker thread \& pre => [\e&pre_handle, $arg1, $arg2, ...] # run after creating worker thread \& do => [\e&do_handle, $arg1, $arg2, ...] # job handler for each worker \& post => [\e&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\*(Aqt wait. .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" \&\f(CW\*(C`Thread::Pool::Simple\*(C'\fR provides a simple thread-pool implementation without external dependencies outside core modules. .PP Jobs can be submitted to and handled by multi-threaded `workers' managed by the pool. .SH "AUTHOR" .IX Header "AUTHOR" Jianyuan Wu, .SH "COPYRIGHT AND LICENSE" .IX Header "COPYRIGHT AND LICENSE" Copyright 2007 by Jianyuan Wu .PP This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.