grasshopper!!! has asked for the wisdom of the Perl Monks concerning the following question:
Can anyone tell me why the last child process will not exit.The program tries to calculate PI using children to split progress and sum the answers at end,but will not return last calculation and exit.
#!/usr/bin/perl -w use feature 'say'; use IO::Handle; my $total=0.0; @waitlist = qw(0 200 400 600 800 1000); foreach $item (@waitlist) { pipe(*{$item},RETHAND); *{$item}->autoflush(1); RETHAND->autoflush(1); unless (my $pid = fork()) { my $h = 1.0 /1200.0; my $sum = 0.0; for (my $i = $item; $i < ($item+200); $i++){ my $x = $h * ($i - 0.5); $sum += 4.0 / (1.0 + $x*$x); } my $ret=$sum*$h; print RETHAND "$ret"; exit; } } foreach $item (@waitlist) { $response = <$item>; $total+= ($response+0.0); print "$total\n"; } 1 while (wait() != -1); print " $total\n"; print "All done!\n";
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Trouble with child processes
by Anonymous Monk on Nov 29, 2015 at 01:00 UTC | |
|
Re: Trouble with child processes
by FreeBeerReekingMonk (Deacon) on Nov 29, 2015 at 02:05 UTC | |
|
Re: Trouble with child processes
by Anonymous Monk on Nov 29, 2015 at 01:34 UTC | |
by BrowserUk (Patriarch) on Nov 29, 2015 at 01:53 UTC | |
by Anonymous Monk on Nov 29, 2015 at 02:00 UTC | |
by Anonymous Monk on Nov 29, 2015 at 02:07 UTC | |
by grasshopper!!! (Beadle) on Nov 29, 2015 at 12:42 UTC |