Front page | perl.ithreads |
Postings from April 2008
RE: Work Crew example
Thread Previous
|
Thread Next
From:
Chris Fowler
Date:
April 24, 2008 17:19
Subject:
RE: Work Crew example
Message ID:
1209082788.21630.228.camel@shuttle
On Thu, 2008-04-24 at 17:06 -0700, Wong, Danny H. wrote:
> Thanks for your comments. Do you have a perl example on how it can be
> done? I've read comments like yours on the websites, but don't have a
> concrete example. I'm trying to figure out how to implement a copy
> function with work crew thread model. I'm learning how to use the
> power
> of threads and of course using it correctly...
Honestly I've not worked in perl threads in a long time. I got started
and ran into so many obstacles learning about interpreter threads vs
<flamebait>real threads</flamebait> that I gave up. I'm hoping that
Parrot may do <flamebait>the right thing(tm)</flamebait> and implement
some real threads.
Here is a ROUGH simple example
use Net::Ping;
use threads;
sub worker {
my $target = shift;
while(1) {
my $p = Net::Ping->new();
my $r = $p->ping($target, 5);
if($r == 0) {
print "$target:DOWN\n";
} else {
print "$target:UP\n";
}
$p->close();
}
}
# main program
pipe R,W;
for(my $x = 1; $x <= 10; $x++) {
threads->create("worker", "192.168.7.$x");
}
while(<R>) {
print "$_";
}
I use pipes (IPC) for the workers to talk back to the manager.
You can replace thread with fork and still use this method. The program
is not smart enough to track changes in state, etc. That logic can go
in the workers or the manager.
Chris
Thread Previous
|
Thread Next