0
可能重複:
Perl: Threading with shared multi-dimensional hash如何在Perl中創建一個共享變量(哈希數組)
我有一段代碼,看起來像這樣(簡單化):
my @arr;
foreach $t (1..8){
load_arr($t);
}
sub load_arr{
my ($t) = @_;
#get some data form somewhere
#and put it into $a, $b, $c, $d
$arr[$t]{$a}{$b}{$c} = $d;
}
load_arr實際上需要很長時間才能在大數據集上循環(未顯示循環icity)
我想重寫代碼看起來像這樣。
my @arr :shared;
my @threads;
foreach $t (1..8){
push @threads, threads->create(\&load_arr,$t);
}
$->join for @threads;
....
問題是,當我運行它,我得到以下錯誤:
Thread 1 terminated abnormally: Invalid value for shared scalar at ...
我要尋找一些幫助,如何正確分享這些?
謝謝
謝謝,我沒有看到那一個。會試一試。 – Smartelf
我同意格雷格培根。同樣的問題,答案適用。請參閱PerlMonks上的[線程:共享標量的無效值](http://www.perlmonks.org/?node_id=259551)。 – ikegami