Ton code a un problème : tu suppose que *val va être lu depuis la mémoire. En pratique c'est très souvent faux, car le compilateur a tendance à générer un code de ce genre :
# On suppose que debit est stocké dans r3 ld r4, @val # val est une adresse absolue en mémoire, r4 est choisi arbitrairement sub r4, r4, r3 # r4 -= r3 st @val, r4
C'est approximatif, mais l'idée est là. Entre le moment où le chargement de val dans r4 et le moment où l'on écrit par dessus val, plein de choses peuvent s'être passées — entre autres, un autre thread essaye de faire exactement la même chose.
[^] # Re: Recouvrement
Posté par lasher . En réponse à la dépêche IBM lance la mémoire transactionnelle dans le matériel. Évalué à 3.
Ton code a un problème : tu suppose que
*valva être lu depuis la mémoire. En pratique c'est très souvent faux, car le compilateur a tendance à générer un code de ce genre :# On suppose que debit est stocké dans r3ld r4, @val # val est une adresse absolue en mémoire, r4 est choisi arbitrairementsub r4, r4, r3 # r4 -= r3st @val, r4C'est approximatif, mais l'idée est là. Entre le moment où le chargement de
valdansr4et le moment où l'on écrit par dessusval, plein de choses peuvent s'être passées — entre autres, un autre thread essaye de faire exactement la même chose.