Threads::Pool is Copyright (C) 2013, Francesco Serra NAME "Threads::Pool" - API to get a Pool of reusable threads SYNOPSIS my $pool = Threads::Pool->getInstance( [[NUMBER OF THREADS, SUB CODEREF], WAIT SECONDS] ); $pool->addToTheQueue( \@array ); $pool->destroy(); DESCRIPTION This class instances a pool of reusable threads, gives them a task, and then adds to a shared queue any $obj you want to give them to evaluate. Your $obj MUST be shareable ( look for which kinds are allowed in perl's documentation ) and shared before being added to the queue ( or at least serialized, so that you can then deserialize it inside the SUB CODEREF you supplied ), and put in an ARRAYREF ( mandatory ). You must also supply the number of threads you want to be run inside the pool at creation time. Optionally you can give a wait time for the threads to wait between executions of the coderef, defaults to 0.3 seconds. You can call the pool's instance from wherever in your code, passing as argument always the same CODEREF, as it's a static member of this class; once the instance is created, every attempt to recreate it will just be ignored, so you need to destroy it ( via ->destroy() ) before doing it. The pool can't give you any assurance that all the threads will get their jobs finished before exiting the main program, so you MUST ensure that they'll have enough time to run ( if you care ). It's thus advisable that you destroy() the pool when you're done. Otherwise perl will most probably complain that you still have running threads while exiting ( mostly if you've got more than a pool at once in the same scope, as the references are statically kept by the class itself, so that no automagic cleanup method will be invoked ), although the pool will do its best to kill them beforehand. Requires at least Perl 5.8.0 and the support to ithreads, with the presence of the threads and threads::shared modules. METHODS "getInstance( [[NUMBER OF THREADS, SUB CODEREF], WAIT SECONDS] )" This method returns the pool's instance, if already created, or creates it with arguments you pass; "addToTheQueue( $obj )" This method lets you add the args you want to be passed to the coderef by the threads. This must be an ARRAYREF to a previously SHARED array. "destroy()" This method destroies the pool's instance, waiting for all the threads to have their jobs done. SUPPORT No support is available AUTHOR Francesco Serra, fn.serra@gmail.com Copyright 2013. LICENSE INFORMATION This library is free software; you can redistribute it and/or modify it under the terms of the can redistribute it and/or modify it under the terms of the GPL License 3.0. For details, see the full text of the license in the file LICENSE.