Birden çok iş parçacığı üzerinde çok boyutlu bir karma paylaşmaya çalışıyorum. Bu karma 2 bağlı anahtar çifti tutar, zaten bağlı olup olmadıklarını bilmem gerek, eğer değilse, onları bağladım, yoksa veritabanına gitmeye gerek yok.Perl: Paylaşılan çok boyutlu karma ile iş parçacığı
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;
}
}
Ben çizgi Bu görünüşte sadece paylaşılan yapının tek seviyesini paylaşmasına izin paylaşılan :: perl parçacığı ile ilgisi var
if(not defined $FLUobject2param{$objectID}{$paramID}){
hatayı Invalid value for shared scalar
alıyorum.
Bu kombinasyonun birden çok iş parçacığı üzerinde zaten kullanılmış olup olmadığını nasıl kontrol edebilirim?