If your Perl is not built with threads support, no problem. GrandFather's queue demonstration is possible using MCE::Hobo and MCE::Shared. Notice the similarity.
use strict; use warnings; use MCE::Hobo; use MCE::Shared; my $workQueue = MCE::Shared->queue(); my $doneQueue = MCE::Shared->queue(); my $numWorkers = 4; MCE::Hobo->create(sub{DoWork($workQueue, $doneQueue)}) for 1 .. $numWo +rkers; for (1 .. 10000) { my $work = int(rand(10000)); $workQueue->enqueue($work); } $workQueue->end(); my $count_done = 0; while () { my $result = $doneQueue->dequeue(); last if (!$result && ++$count_done == $numWorkers); print "$result\n" if $result; } $_->join() for MCE::Hobo->list; exit; sub DoWork { my ($work, $done) = @_; while (my $item = $work->dequeue()) { $done->enqueue($item) if $item >= 10 && $item <= 20; } $done->enqueue(0); }
Regards, Mario
In reply to Re^2: Multi-thread combining the results together
by marioroy
in thread Multi-thread combining the results together
by Marshall
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |