J'ai un gros probleme de concurrence dans l'appli que je developpe:
3 classes:
A (thread)... crée un arbre (liste chainée)
B... Interface entre les 2 threads
C (thread)...traite l'arbe
La classe B possede deux references a une structure "arbre" vide preallouée.
3 methodes:1 accesseur pour recuperer chaque reference et une fonction de "swap" des references.
Le thread A recupere la reference 1,et remplit l'arbre.Si B est fini, il "swap" les references et lance le thread B .Il reboucle ensuite.
Le thread B recupere la reference 2,traite l'arbre et le vide,indique au thread A que l'operation est finie et se termine.
En gros,c'est un dual buffering...
Mon probleme:
J'ai des problemes de synchronisation de donnée.La synchronisation des operations des threads est bonne,mais lorsque le thread A recupere la reference une deuxieme fois,c'est comme si il lisait une memoire cache, en gros, l'arbe obtenu n'est pas l'arbre vidé par le thread B mais l'arbre plein rempli il y a 2 cycles....
Quelqu'un a une idée pour corriger ce probleme?
Partager