我有一个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();
}
}
第一个循环运行良好,但是在第二个循环中,脚本退出并显示以下错误:
我想我应该清理@threads,但是我该怎么做呢?我什至不确定这是否是问题。
最佳答案
只需在循环结束时清除@threads
即可:
@threads = ();
或者更好的是,在循环开始时用
@threads
声明my
:while ($launcher == 1) {
my @threads;
关于multithreading - 在Perl中完成线程后如何清理它们?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8325186/