我在同时调用Parallel::ForkManager
和Inline::Java
时遇到了问题。具体来说,如果我使用JNI => 1
选项调用Inline::Java
(我必须这样做),那么fork进程就不会返回到父进程。以下是代码:
use Parallel::ForkManager;
##### Calling Inline::Java #####
use Inline Java => <<END, JNI => 1;
END
###### End of Inline::Java #####
my $pm = Parallel::ForkManager->new(2);
for my $i (0..1) {
$pm->start and next;
print "Inside process $i\n";
$pm->finish;
}
$pm->wait_all_children;
print "Back to Parent.\n";
如果我运行这个程序,它会进入子进程但永远不会回到父进程。如果我删除注释之间的3行代码,它就能正常运行。如果我将
JNI => 1
更改为JNI => 0
(虽然我不允许为我的目的更改该参数),那么就会出现错误消息:Lost connection with Java virtual machine at /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi/Inline/Java.pm line 975
。有人知道如何解决这个冲突吗?我还必须在并行处理之前调用Inline::Java,因此在并行处理完成后使用
require
不是一个选项。谢谢!