Ale*_* B. 1 perl multithreading
我正在创建一个Thread :: Queue元素数组.我是这样做的:
for (my $i=0; $i < $queues_amount; $i++){
$queues[i]=Thread::Queue->new;
}
Run Code Online (Sandbox Code Playgroud)
然而,虽然我正在用这样的元素填充每个队列
$queues[$index]->enqueue($element);
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
无法在未定义的值上调用方法"enqueue"...
你能帮我找出问题所在吗?
我的perl版本是5.12.2.
您没有在循环中$的$i变量上使用sigil :
for (my $i=0; $i < $queues_amount; $i++){
$queues[i]=Thread::Queue->new; # should be $i
}
Run Code Online (Sandbox Code Playgroud)
如果你有use strict,该subs部分会抛出关于裸字的错误i.要捕获许多错误,请将其use warnings; use strict;放在所有程序的顶部.
将它写成以下内容也更为惯用:
my @queues = map {Thread::Queue->new} 0 .. $queues_amount - 1;
Run Code Online (Sandbox Code Playgroud)