我有一个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/

10-11 01:27