के साथ थ्रेडिंग मैं एकाधिक धागे पर एक बहु-आयामी हैश साझा करने की कोशिश कर रहा हूं। इस हैश में 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;
}
}
मैं लाइन
if(not defined $FLUobject2param{$objectID}{$paramID}){
जाहिरा तौर पर पर्ल के थ्रेड :: केवल आप साझा संरचना की एक एकल स्तर साझा करने की अनुमति साझा के साथ क्या करना है पर त्रुटि Invalid value for shared scalar
मिलती रहती है।
मैं अभी भी यह जांचने में सक्षम कैसे होगा कि यह संयोजन पहले से ही एकाधिक धागे पर उपयोग किया जा रहा है या नहीं?