gpt4 book ai didi

multithreading - 如果启动多个线程,Perl的线程连接方法是否会等待第一个线程完成?

转载 作者:行者123 更新时间:2023-12-03 13:14:48 27 4
gpt4 key购买 nike

     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...
}

project_list是40个项目的列表。当我为每个项目生成线程时,join方法会等待第一个线程完成,然后移至下一个线程,依此类推吗?

如果是这样,那么有可能避免吗?我的意思是有些线程会比其他线程更快地完成,所以为什么要等待?

如果需要更多信息,请告诉我。
谢谢你。

最佳答案

$_->join等待$_指定的线程完成。由于按顺序推送它们,并且foreach按顺序遍历列表,因此,您将首先等待第一个线程。

但这无关紧要,因为您正在等待所有线程完成。无论您是先等待最快的整理者还是最慢的整理者,都没关系-无论如何,您将一直在等待所有人。

关于multithreading - 如果启动多个线程,Perl的线程连接方法是否会等待第一个线程完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8418706/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com