"[...]index.php?state=information&pageinfo=2"
和
foreach $thr (1..5)
{
$threads[$thr]=threads->create("worker");
}
后者运作良好,前者发出警告。
foreach (1..5)
{
push @threads,threads->create("worker");
}
这是整个代码。并且警告无法在threadqueue2(1).plx.line42上的未定义值上调用方法“is_running”。 Perl退出活动线程。
答案 0 :(得分:3)
没有。您最终会得到不同的数据结构。正如您从代码的简化版本中可以看到的那样。
#!/usr/bin/perl
use strict;
use warnings;
use 5.010;
use Data::Dumper;
my @threads;
foreach my $thr (1 .. 5) {
$threads[$thr] = 'A Thread';
}
say Dumper \@threads;
@threads = ();
foreach (1 .. 5) {
push @threads, 'A Thread';
}
say Dumper \@threads;
输出结果为:
$VAR1 = [
undef,
'A Thread',
'A Thread',
'A Thread',
'A Thread',
'A Thread'
];
$VAR1 = [
'A Thread',
'A Thread',
'A Thread',
'A Thread',
'A Thread'
];
在第一个示例中,您开始在元素1处填充数组,因此第一个元素(索引为0)包含undef
。