2010-03-29 64 views
3

我想用一組線程來處理數據,並與其他排隊一個數組,目前入列和出隊的過程似乎並不奏效出列與線程隊列:: Perl的

任何思緒之中? ?

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); 

回答

5

你沒有提領它訪問數組引用?嘗試

while (my $DataElementRef = $DataQueue->dequeue()) { 
    my @DataElement = @$DataElementRef; 
    print "\t".$DataElement[0]."\n"; 
} 
+0

謝謝,但是這並沒有解決更大的問題,無法打印任何東西,肯定有什麼地方錯誤 – Bob 2010-03-30 17:49:13

+0

while語句中的某些東西似乎是錯誤的,而不是拋出錯誤 – Bob 2010-03-30 18:31:37

1

@l不是共享的,所以你不能將它的引用傳遞給另一個線程。使用threads :: shared。

+0

普通標量被添加到原樣排隊。 如果尚未線程共享,其他複雜數據類型將在放入隊列之前克隆到線程共享結構中(如果需要,則包括任何祝福和只讀設置)。 – gangabass 2010-09-19 13:54:27