我Thread::Pool::Simple
用来创建一些工作线程。每个工作线程都会做一些事情,包括调用 ,chdir
然后执行外部 Perl 脚本(从jbrowse
基因组浏览器,如果重要的话)。我capturex
用来调用外部脚本并死于其失败。
我发现当我使用多个线程时,事情开始变得一团糟。经过一番研究。似乎某些线程的当前目录不正确。
也许chdir
在线程之间传播(即不是线程安全的)?或者也许它是什么capturex
?
那么,如何安全地为每个线程设置工作目录呢?
** 更新 **
按照执行时更改目录的建议,我想问一下我应该如何将这两个命令传递给capturex
?
目前我有:
my @args = ( "bin/flatfile-to-json.pl", "--gff=$gff_file", "--tracklabel=$track_label", "--key=$key", @optional_args );
capturex( [0], @args );
如何添加另一个命令@args
?是否会capturex
因任何命令的错误而继续死亡?