我想在多個線程上共享多維散列。 這個散列保存2個連接的密鑰對,我需要知道它們是否已經連接,如果它們不是,我需要連接它們,如果沒有,則不需要去數據庫。Perl:共享多維散列的線程化
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的線程共享::只允許您共享共享結構的單一層次的事。
我該如何仍然能夠檢查這個組合是否已經用於多個線程?