$globalQ : shared = new Thread::Queue; $q = new Thread::Queue; my $regQueryObj = RegSuiteQuery->new(\%allConfig); my @queryworkers = map {threads->new($regQueryObj->queryWorker,$q,$globalQ);} 1 .. $maxnoofQueryThreads; $q->enqueue(@allQueryPaths); $q->enqueue( ( undef ) x $maxnoofQueryThreads ); $_->join for @queryworkers; $globalQ->enqueue("FINISH");