【发布时间】:2013-01-11 00:37:43
【问题描述】:
我有简单的多线程站点检查器。 我尝试在此目录中打开循环 txt 文件
my @files = glob( '*.txt' );
foreach my $file(@files){
@sites=load_file($file);
$total_count = scalar(@sites);
for my $t (1..$threads) {
push @threads, threads->create(\&check, $t);#check- main subroutine
threads->create(\&stat)->join() if $t == $threads;#stat - realtime statistics(good/bads) sites
}
foreach my $t (@threads) {
$t->join();
}
}
但它仅适用于第一个文件和程序终止。 任何人都可以帮忙吗? 谢谢。
【问题讨论】:
-
你
use strict; use warnings了吗?@threads在哪里声明?为什么不将它声明为 inside 外循环?另外,我看不到线程和@sites之间的任何交互。你知道Thread::Queue吗? -
是的。因为它与问题无关。子程序检查使用@sites。
-
如果您不知道您的程序为何无法运行,那么您就无法说出与该问题相关的内容。请发布您的整个代码。我在这个片段中根本看不到任何声明,我怀疑在其他地方对
@sites、$threads或@threads的处理不当。
标签: multithreading perl