Je vais écouter sur un port (serveur simple) quand une demande est passée analyser l'URL et commencer un fil.Pourquoi ne puis-je pas voir les éléments d'une file d'attente partagée depuis mon thread Perl?
Le thread va insérer un élément dans une file d'attente partagée et il est verrouillé pendant l'insertion.
Je ne suis pas en mesure d'obtenir l'élément lorsque j'appelle coup d'oeil sur la file d'attente.
use Thread qw(async);
use Thread::Queue;
my $DataQueue:shared = new Thread::Queue;
$newElement = init($user,$param,$reqest); # init is method in ElementStructure.pm
#after creating the element it is passes to subroutine where thread is started
sub updateData
{
my $iElement=shift;
$thr = async
{
{
lock($DQueue);
print "---->locked\n";
$DQueue->enqueue($iElement);
insertdata();
}
print "lock released\n";
};
}
sub insertdata
{
my $count=0;
while ($DataElement = $DQueue->peek($count))
{
print "-- position $count\n";
$count++;
}
}
ce qui ne "pas en mesure" signifie? ce qui se produit? – ysth
avez-vous une raison d'utiliser 'Thread' au lieu des' threads 'plus modernes? –
Veuillez reformuler votre question pour indiquer ce qui se passe réellement et ce que vous attendez à la place, de préférence avec un exemple de sortie indiquant le résultat. – Ether