sub parallelizing{
my counter = 0;
my $MAX_PROCESS = 10;
my $workerQueue = Parallel::ForkManager->new($MAX_PROCESS);
$workerQueue->start and next;
print "$process #" . $counter . " started\n";
$counter = $counter +1
$workerQueue->finish;
}
我正在使用Parallel::ForkManager
来创建共享变量$counter
的子进程,但事实证明它不是共享的。有没有办法让子进程共享变量?
答案 0 :(得分:0)
简短回答 - 不,不是这样。 fork
创建一个单独的流程实例,具有自己的内存状态。它实现了copy-on-write
机制(通常),因此非常有效。但是流程无法轻易共享内存。
然而,您可以执行threads::shared
之类的操作来创建线程;共享变量可由多个东西访问。 (虽然我通常建议使用Thread::Queue
代替)。
这样的事情: Perl daemonize with child daemons 可能会提供一些有用的例子。