Newbie user! Anybody can help me?

[email protected] ((PerlDiscuss - Perl Newsgroups and mailing lists))
Newsgroups perl.ithreads
Organization PerlDiscuss.com
Message-ID <[email protected]>
Hello all,

I have a pool of file and I want to process this files by threads opened
on start.

The first free thread get the first file on pool, remove from list and
process this file, next thread takes the next file, ...

If the pool is empty the threads stay waiting for new files.

I'm trying to do something like this script below, but the threads can't
see the queue list.

Thanks for help!

Regards

#!/usr/bin/perl 

use Thread qw(yield);
use Data::Dumper;
use Thread::Queue;
use threads::shared;

my $DataQueue : shared = Thread::Queue->new;

# start threads
my $thr1 = new Thread \&threadWorker;
my $thr2 = new Thread \&threadWorker;
my $thr3 = new Thread \&threadWorker;
my $thr4 = new Thread \&threadWorker;

while (1) {
        $DataQueue->enqueue( time() );
        print " Added: " . time() . " / Total: " . $DataQueue->pending .
"\n";
        sleep(1);
}


sub threadWorker {
        my ($DataElement);

        while (1) {

                if ( $DataElement = $DataQueue->dequeue_nb ) {
                        print "- $DataElement popped\n";
                } else {
                        print "DataQueue is empty [" . $DataQueue->pending
 "] ";
                print "- " . Dumper($DataQueue);
                }
                sleep 1;
        }

        return 1;
}
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.