inf*_*oop 1 parallel-processing perl multithreading join
foreach $name (@project_list)
{
# a thread is created for each project
my $t = threads->new(\&do_work, $name);
push(@threads, $t);
}
foreach (@threads) {
my $thrd = $_->join;
print "Thread $thrd done\n";
}
sub do_work {
# execute some commands here...
}
Run Code Online (Sandbox Code Playgroud)
project_list是40个项目的列表.当我为每个项目生成一个线程时,join方法是否会等待第一个线程完成,然后转移到下一个线程,依此类推?
如果是这种情况,那么可以避免它吗?我的意思是一些线程会比其他线程更快完成所以为什么要等
如果需要更多信息,请告诉我.谢谢.
$_->join等待指定的线程$_完成.既然你按顺序推送它们,并按顺序foreach遍历列表,是的,你将首先等待第一个线程.
但这并不重要,因为你正在等待所有线程完成.如果你等待最快的终结者或最慢的终结者并不重要 - 无论如何你都会等待所有人.