子fork进程返回值



在使用Parallel::ForkManager时,我几乎没有什么疑问。就像我在for循环中调用子进程一样,那么谁将执行下一条语句,父语句还是子语句。代码:

my $pm = Parallel::ForkManager->new($forks);  foreach my $q (@numbers) {
my $pid = $pm->start and next;
my $res = calc($q); 
if($res == error )
{return};  
if (#res == some_no)
{do something and next;
}
$pm->finish(0, { result => $res, input => $q });

}。。。。我想知道fork返回输出,并希望父进程执行1st-next和2nd-next。还想知道如果子进程在中间结束,家长会知道吗?

perl中并行性的两个主要来源是线程use threads;和forking。对于后者,Parallel::ForkManager可能是最好的选择。

但是,对于复制?这可能没有你想象的那么有帮助。你的限制因素不是CPU,而是IO到磁盘。

并行IO并没有你想象的那么有帮助,而且在许多情况下可能会适得其反——通过使磁盘颠簸,必须写入两个位置,你会降低总体吞吐量。

最新更新