複数のスレッドで多次元ハッシュを共有しようとしています。このハッシュは2つの接続されたキーペアを保持します。それらがすでに接続されているかどうかを知る必要があります。接続されていない場合は接続する必要があります。接続されていない場合は、データベースにアクセスする必要はありません。
use threads;
use threads::shared;
my %FLUobject2param : shared = ();
#Start a new thread for every available processor
for (my $i=0;$i<$PROCESSORS;$i++) {
threads->new(\&handlethread);
}
#Catch if these threads end
foreach my $onthr (threads->list()) {
$onthr->join();
}
sub handlethread{
...
if(not defined $FLUobject2param{$objectID}{$paramID}){
$dbh->getObject2Param($objectID,$paramID);
$FLUobject2param{$objectID}{$paramID} = 1;
}
}
Invalid value for shared scalar
私はライン上でエラーを受け取り続けます
if(not defined $FLUobject2param{$objectID}{$paramID}){
これは明らかにperlのthreads::sharedと関係があり、単一レベルの共有構造のみを共有できます。
この組み合わせがすでに複数のスレッドで使用されているかどうかを確認するにはどうすればよいですか?