Estoy intentando compartir un hash multidimensional sobre varios subprocesos. Este hash tiene 2 pares de llaves conectadas, necesito saber si ya están conectadas, si no lo están, necesito conectarlas, si no, no hay necesidad de ir a la base de datos.Perl: subprocesamiento con hash multidimensional compartido
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;
}
}
sigo obteniendo el error Invalid value for shared scalar
en la línea
if(not defined $FLUobject2param{$objectID}{$paramID}){
Al parecer, esto tiene que ver con hilos de Perl :: compartida sólo que le permite compartir un único nivel de estructura compartida.
¿Cómo podría seguir siendo capaz de comprobar si esta combinación ya se utiliza en múltiples hilos?