in reply to Re: Multi-thread combining the results together
in thread Multi-thread combining the results together
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
|
|---|