non, pas tout à fait.Citation:
Envoyé par mchk0123
soient 3 noeuds voisins A B C.
A et B appartiennt au proc 1
C appartient au proc 2
la frontière A-b est gérée par le proc 1 (logique).
la frontière B-C est gérée par le proc 2
Alors, à la fois le proc 1 et le proc 2 veulent accéder aux variables d'état du noeud B. C'est typiquement un cas de synchronisation.
Je m'explique :
modifier l'état de B c'est :
lire l'état de B dans une case mémoire X
faire une addition, disons B+P1
écrire le résultat dans X
si les deux procs font leur addition exactement en même temps, alors le résultat final sera, de manière imprévisible, soit l'un (B+P1), soit l'autre (B+P2), mais pas la somme des deux (B+P1+P2). C'est le problème type de syncrhonissation.
La solution est que le premier qui accède à B bloque tout autre accès à B et ne débloque que quand il a fini d'écrire son résultat :
blocage
lecture
addition
écriture
déblocage
comme on ne peut pas définir un objet synchro pour chaque case mémoire, il faut bien faire gaffe car en fait l'étape "blocage" va bloquer tout un paquet de noeuds en même temps; d'ou goulot d'étranglement si mal réfléchi au départ.
OL