Perl : treads et variables partagées
Popaul
-
Popaul -
Popaul -
bonjour,
je suis assez débutant en perl, et j'ai un probleme avec un script que j'esasye de faire.
C'est vraiment difficil pour moi d'expliquer mon probleme, et je vais faire de mon mieux :
j'ai une variable, un hash
pour l'exemple : $hash->{'popo'} = "test";
ensuite je lance un premier thread, puis un second thread, puis un troisieme.
chacun de ces 3 threads vont devoir accèder à mon hash, sans ordre précis (thread 3 peut etre avant le thread 1...)
dans chaques threads, j'arrive à lire mon hash sans probleme apparent.
(print $hash->{'popo'} par exemple, et il m'affiche "test")
par contre, si je fais dans le thread 1:
puis dans le thread 3 :
alors, s'affiche non pas "coucou", mais "test"
le probleme est toujours là si c'est dans thread 3 que je fais
Aussi, j'ai essayé de rendre mon hash accessible, avec
de plus, dans chacuns des threads, j'ai essayé de faire un print
bon, je reste disponible pour donner plus d'infos, mais en tout cas, j'ai vraiment besoin d'aide pour continuer mon script.
Merci de votre attention.
je suis assez débutant en perl, et j'ai un probleme avec un script que j'esasye de faire.
C'est vraiment difficil pour moi d'expliquer mon probleme, et je vais faire de mon mieux :
j'ai une variable, un hash
pour l'exemple : $hash->{'popo'} = "test";
ensuite je lance un premier thread, puis un second thread, puis un troisieme.
chacun de ces 3 threads vont devoir accèder à mon hash, sans ordre précis (thread 3 peut etre avant le thread 1...)
dans chaques threads, j'arrive à lire mon hash sans probleme apparent.
(print $hash->{'popo'} par exemple, et il m'affiche "test")
par contre, si je fais dans le thread 1:
$hash->{'popo'} = "coucou";
puis dans le thread 3 :
print $hash->{'popo'}
alors, s'affiche non pas "coucou", mais "test"
le probleme est toujours là si c'est dans thread 3 que je fais
$hash->{'popo'} = "coucou";et dans thread 1
print $hash->{'popo'}.
Aussi, j'ai essayé de rendre mon hash accessible, avec
$hash : shared;(comme indiqué dans la doc de threads::shared). mais cela ne fonctionne toujours pas.
de plus, dans chacuns des threads, j'ai essayé de faire un print
$hash, et alors, il m'affiche l'allocation mémoire de mon hash, mais je suis très surpris de ne pas avoir la même allocation mémoire pour les 3 threads : par conséquent, je pense que lorsque je lance mes threads, il me crée une instance de mon hash. Est ce que je me trompe ?
bon, je reste disponible pour donner plus d'infos, mais en tout cas, j'ai vraiment besoin d'aide pour continuer mon script.
Merci de votre attention.
A voir également:
- Perl : treads et variables partagées
- Denon perl pro test - Accueil - Audio
- Active perl - Télécharger - Édition & Programmation
- DzSoft Perl Editor - Télécharger - Édition & Programmation
- Comment lire un fichier .pl perl ? - Forum Windows
- Perl: transformer un fichier en package ✓ - Forum Perl
4 réponses
Merci de bien vouloir m'aider.
ca va être dur de trouver une erreur parmis mes lignes de code. car, comme je l'ai déjà dis : je suis débutant. donc je te propose mon code, qui est long pour le mettre dans ce forum, je préfere mettre un lien :
http://m.lory.free.fr/ic2.pl
tu aura besoin des fichiers
http://m.lory.free.fr/ic2.conf.pl
et
http://m.lory.free.fr/folders.xml
si tu vois que tu comprends rien à mon script, cela ne m'étonnera pas.
NB : je met à dispo ces fichiers, mais pour une durée déterminée.
ca va être dur de trouver une erreur parmis mes lignes de code. car, comme je l'ai déjà dis : je suis débutant. donc je te propose mon code, qui est long pour le mettre dans ce forum, je préfere mettre un lien :
http://m.lory.free.fr/ic2.pl
tu aura besoin des fichiers
http://m.lory.free.fr/ic2.conf.pl
et
http://m.lory.free.fr/folders.xml
si tu vois que tu comprends rien à mon script, cela ne m'étonnera pas.
NB : je met à dispo ces fichiers, mais pour une durée déterminée.