Perl 的多线程怎么等待任意一个子线程退出
1个回答
展开全部
其实不是很明白您的问题, 不过 perl 的多线程 (threads) 主要就三个状态, create(创建), 和 joinnable(可合流) 和 join(合流). 除了 join, 还有 yield, detach 那些, 但这里先不讨论了.
$|=1;
use threads;
my $th1 = threads->create(sub {
for ( 0..9 ) {
print "$_ "; sleep 1
}
});
my $th2 = threads->create(sub {
for ( 'a'..'z' ) {
print "$_ "; sleep 1
}
});
#以上就建构了 2 条 thread.它们会在最快的时间内开始起动, 主线(main)会继续运行
sleep 1; # 但为了防止在完成起动前在 main 就被 join 了,
# 所以通常会 sleep 一点点的时间等上面的 threads 都完成起动
#以上两条 thread 完成後, 就变成 joinnable 状态
$th1->join; # 合流
$th2->join; # 合流
# perl 为防止不小心做成孤儿/丧屍thread, 所以用 threads 时,
# 必需要明确写出 join 的时机, 否则程序完结时会有 warning 字句出现.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |