#! perl -slw
use strict;
use threads;
use Thread::Queue;
$|=1;
my $QpRead = new Thread::Queue;
my $QkRead = new Thread::Queue;
if( defined( my $kid=fork() ) ) {
print 'Forked';
if( $kid ) { # Parent
print 'Pop ', $$;
while( 1 ) {
print "Kid said: ", $QpRead->dequeue while $QpRead->pendin
+g;
Win32::Sleep rand 1000;
$QkRead->enqueue( 'Blah ' x rand 10 ) if rand > .5;
}
}
else { # Kid
print 'Kid ', $$;
while( 1 ) {
print "Pop said: ", $QkRead->dequeue while $QkRead->pendin
+g;
Win32::Sleep rand 1000;
$QpRead->enqueue( 'Blah ' x rand 10 ) if rand > .5;
}
}
}
else {
die "Fork failed: $!";
}
__END__
P:\test>357845
Forked
Pop 416
Forked
Kid -1140
Pop said: Blah Blah Blah
Kid said: Blah Blah Blah Blah
Kid said: Blah
Kid said: Blah Blah Blah Blah
Kid said: Blah Blah Blah Blah Blah Blah Blah Blah
Kid said: Blah Blah Blah Blah Blah
Pop said: Blah Blah
Kid said: Blah Blah Blah Blah Blah Blah Blah
Pop said: Blah Blah Blah Blah Blah Blah
Pop said: Blah Blah Blah Blah Blah Blah Blah
Pop said:
Kid said: Blah Blah Blah Blah
Pop said: Blah Blah
Kid said: Blah Blah Blah Blah Blah Blah Blah Blah
Kid said: Blah Blah Blah Blah Blah Blah Blah Blah
Pop said: Blah Blah Blah Blah Blah Blah
Pop said: Blah Blah Blah Blah Blah Blah Blah Blah
Kid said: Blah Blah Blah Blah Blah Blah Blah
Pop said: Blah Blah Blah Blah Blah
Kid said: Blah Blah Blah Blah Blah
Kid said: Blah
Pop said: Blah Blah Blah Blah Blah Blah Blah Blah
Kid said: Blah Blah Blah Blah Blah Blah Blah
Pop said: Blah
Kid said: Blah Blah Blah Blah Blah
Pop said: Blah Blah Blah
Kid said: Blah
Terminating on signal SIGINT(2)
Examine what is said, not who speaks.
"Efficiency is intelligent laziness." -David Dunham
"Think for yourself!" - Abigail
|