我在Perl
脚本中使用了多个线程,最后通过此代码剪切了它们:
my @running = threads->list(threads::running);
while ($#running > -1) {
foreach (@thrs) {
$_->join() if $_->is_joinable();
}
@running = threads->list(threads::running);
}
但在50%中,我收到错误消息Perl exited with active threads
。
有人能帮我吗? THX
答案 0 :(得分:2)
当没有正在运行的线程时停止循环,但是只有当没有任何类型的 时,你才应该停止循环。换句话说,您不检查是否存在可连接的线程。解决方案:
while (threads->list()) {
$_->join() for threads->list(threads::joinable);
}
当然,它使用100%的CPU。避免这种情况的简单方法是使用:
$_->join() for threads->list();