重複の可能性:
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は、大きなデータセットをループするため、実際には長い時間がかかります(簡単にするためにループは示していません)。
このようにコードを書き直したいと思います。
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 ...
これらを適切に共有する方法についてのヘルプを探していますか?
ありがとう