如何使用Perl的系统调用来生成独立线程?

geo*_*son 5 perl multithreading

我想调用其他Perl脚本,以便使用主Perl脚本执行争用测试.

这样的东西目前有效:

system("perl 1.pl");
system("perl 2.pl");
exit;
Run Code Online (Sandbox Code Playgroud)

但是,我想在同时运行的独立线程中解决这些问题.

我试过,基于我的Google搜索,做这样的事情:

system(1, "perl 1.pl");
system(1, "perl 2.pl");
exit;
Run Code Online (Sandbox Code Playgroud)

这不起作用.主脚本立即存在,这很好,但是我想要生成的底层线程不会被启动.我想知道是否还有其他事情要做,或者是否有其他人做过这样的事情.

在此先感谢您的帮助.

scr*_*gar 13

use threads;
$thr1 = threads->create('msc', 'perl 1.pl');
$thr2 = threads->create('msc', 'perl 2.pl');

$thr1->join();
$thr2->join();

sub msc{ ## make system call
  system( @_ );
}
Run Code Online (Sandbox Code Playgroud)

这将等待它们退出之前完成执行.我猜这是你想要的原始问题,对吗?如果没有随意删除评论并编辑您的帖子以更好地解释它,我会再试一次.

  • 你应该使用`$ ^ X`而不是指望在PATH中的'perl`. (3认同)