我有一个Perl脚本,在验证某个表达式时启动线程。如何在线程完成后清理线程?
while ($launcher == 1) {
# do something
push @threads, threads ->create(\&proxy, $parameters);
push @threads, threads ->create(\&ping, $parameters);
push @threads, threads ->create(\&dns, $parameters);
# more threads
foreach (@threads) {
$_->join();
}
}
第一循环运行正常,但在第二个脚本与以下错误退出:
Thread already joined at launcher.pl line 290. Perl exited with active threads: 1 running and unjoined 0 finished and unjoined 0 running and detached
我想我应清洁@threads但我怎么能做到这一点?我甚至不确定这是否是问题。
它可能不是你的唯一的问题,但肯定会是一个问题。在循环中第一次加入'@threads [0..2]'。然后尝试加入'@threads [0..5]',其中三个线程已经加入。 – flesk