我正在尝试使用一组线程处理数据并将其与另一个进行排队,目前排队和出列过程似乎无法正常工作
任何虽然??
sub process() {
while (my @DataElement = $DataQueue->dequeue()) {
print "\t".$DataElement[0]."\n";
}
}
我使用以下内容将数据排入队列
my @l;
push(@l, $directories.$suffix);
push(@l, "testclass");
push(@l, $eachFile);
$DataQueue->enqueue(\@l);
答案 0 :(得分:5)
您是否在不解除引用的情况下访问数组引用?试试
while (my $DataElementRef = $DataQueue->dequeue()) {
my @DataElement = @$DataElementRef;
print "\t".$DataElement[0]."\n";
}
答案 1 :(得分:1)
@l未共享,因此您无法将其引用传递给另一个线程。使用threads :: shared。