Perl 的多线程怎么等待任意一个子线程退出

 我来答
百度网友c9e795dda
2017-01-11 · TA获得超过5167个赞
知道大有可为答主
回答量:1128
采纳率:0%
帮助的人:1138万
展开全部

其实不是很明白您的问题, 不过 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 字句出现.

   

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式