首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的线程不能在perl中接合?

为什么我的线程不能在perl中接合?
EN

Stack Overflow用户
提问于 2013-04-23 16:03:53
回答 1查看 331关注 0票数 0

我用Perl编写了一个非常短的脚本,并在其中使用了multi-thread

我的问题是,我创建的线程不是joinable。所以我想知道,使线程可接合的条件是什么?

Perl中线程的限制是什么?

代码语言:javascript
复制
#!/usr/bin/env perl
#
#
use lib "$::XCATROOT/lib/perl";
use strict;
use threads;
use Safe;

sub test
{
    my $parm = shift; 
}
my $newchassis = ["1", "2", "3"];
my @snmp_threads ;

for my $item (@$newchassis)
{
    my $thread =  threads->create(\&test, $item);
    push @snmp_threads, $thread;
}

for my $t (@snmp_threads)
{
    $t->join();
}

这可能是非常棘手的,因为它在RHEL 6.3上工作,但在SLES 11sp2上失败。

EN

回答 1

Stack Overflow用户

发布于 2013-04-23 16:51:36

虽然没有代码,但我将继续并假定您正在使用join foreach @threads;来连接线程。现在线程的连接依赖于后处理。如果不看你的代码,就很难知道你在做什么。

  1. 如果后处理步骤需要所有线程在开始工作前完成,则等待单个线程是unavoidable.
  2. If后处理步骤特定于每个线程的结果,应该可以使后处理部分成为线程本身的后处理部分。
  3. 在这两种情况下,$_->join foreach @threads;都是可行的。
  4. 如果不需要等待线程完成,请使用命令而不是$_->join foreach @threads;。但是,线程可能返回的任何结果都将被丢弃。

是否确实为您的活动提供了有效的后处理方案?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16164085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档