Perl: Threading mit geteiltem mehrdimensionalem Hash

Ich versuche, einen mehrdimensionalen Hash über mehrere Threads zu teilen. Dieser Hash enthält 2 verbundene Schlüsselpaare. Ich muss wissen, ob sie bereits verbunden sind. Wenn dies nicht der Fall ist, muss ich sie verbinden. Wenn dies nicht der Fall ist, muss nicht auf die Datenbank zugegriffen werden.

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;
    }
}

Ich bekomme immer den FehlerInvalid value for shared scalar an der Leitun
if(not defined $FLUobject2param{$objectID}{$paramID}){

Dies hat anscheinend mit Perls Threads zu tun :: shared, sodass Sie nur eine Ebene der gemeinsam genutzten Struktur gemeinsam nutzen können.

Wie kann ich immer noch überprüfen, ob diese Kombination bereits für mehrere Threads verwendet wird?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage