J'essaie de partager un hachage multidimensionnel sur plusieurs threads. Ce hachage contient 2 paires de clés connectées, j'ai besoin de savoir si elles sont déjà connectées, si ce n'est pas le cas, j'ai besoin de les connecter, sinon, il n'y a pas besoin d'aller à la base de données.Perl: Filetage avec hachage multidimensionnel partagé
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;
}
}
Je continue à obtenir l'erreur Invalid value for shared scalar
sur la ligne
if(not defined $FLUobject2param{$objectID}{$paramID}){
Cela a apparemment à voir avec les fils de Perl :: mutualisé ne vous permettant de partager un seul niveau de la structure commune.
Comment serais-je toujours en mesure de vérifier si cette combinaison est déjà utilisée sur plusieurs threads?