NAME
Thread::Task::Concurrent - Make simple task pocessing simple
SYNOPSIS
use Thread::Task::Concurrent qw(tmsg);
my @data = qw(a b c d e f g h i j k l m n o p q);
my $tq = Thread::Task::Concurrent->new( task => \&task, max_instances => 4, verbose => 1 );
my $result = $tq->enqueue(@data)->start->join->result;
sub task {
    my $char = shift;
    # sleep some time
    my $sleep_time = int rand 10;
    sleep $sleep_time;
    #calculate result
    my $result = "I'm thread " . threads->tid . " and I slept $sleep_time sec. My result was " . $char x 3;
    return $result;
}
DESCRIPTION
If you have input data and you want to pocess it in the same way, Thread::Task::Concurrent gives you an easy to use interface to getthingsdone(TM).
SUBROUTINES
- tmsg($string_message)
 - tmsg($string_message, $tid_to_display)
 - 
Spits out the
$string_messagein the form:[thread_id] <message>thread_id is by default
threads->tid, but you can also set it artificially via the$tid_to_displayvariable. 
METHODS
- Thread::Task::Concurrent->new(%arg)
 - 
- task => sub { ... }
 - 
Set the subroutine for the task. Example:
sub { my ($item, $task_arg) = @_; return $result_item; } - arg => $task_arg
 - 
Add an additional arg hash/array/scalar to the task/subroutine call.
 - max_instances => 4
 - 
Set the maximum number of threads. Default is 4.
 - verbose => 0
 - 
Switch on/off verbose reporting.
 
 - $ttc = $ttc->start()
 - 
Start processing.
 - $ttc = $ttc->join()
 - 
Wait for processing end.
 - $ttc = $ttc->enqueue(@data)
 - 
Enqueue items.
 - $ttc = $ttc->result()
 - 
Gather the result.
 
ACCESSORS
- $q = $ttc->queue
 - $rq = $ttc->result_queue
 - $task_code_ref = $ttc->task
 - $task_arg = $ttc->arg
 - $num = $ttc->max_instances
 - $threads = $ttc->threads
 - $is_verbose = $ttc->verbose
 - $is_finished = $ttc->finished
 
SEE ALSO
-
AUTHOR
jw bargsten, <cpan at bargsten dot org>