Perl : treads et variables partagées

Fermé
Popaul - 5 oct. 2004 à 20:17
 Popaul - 7 oct. 2004 à 19:23
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:
$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:

4 réponses

Hello !

On peut avoir un extrait du script court mais complet pour analyse ?
0
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.
0
Hello !

Je n'ai pu récupérer le fichier ic2.conf.pl.
Il a déjà été retiré ?
0
pardon, c'est un fichier xml donc


http://m.lory.free.fr/ic2.conf.xml
0