Multicœur et synchronisation
Quel est le fonctionnement de l’instruction atomique CAS (compare-and-swap) ?
- AElle n’écrit la nouvelle valeur que si la valeur en mémoire est égale à la valeur attendue, et indique si elle a réussi
- BElle compare deux valeurs en mémoire et écrit la plus grande dans les deux
- CElle échange sans condition la valeur en mémoire et la valeur du registre
Afficher la réponse et l'explication
Réponse : A. Elle n’écrit la nouvelle valeur que si la valeur en mémoire est égale à la valeur attendue, et indique si elle a réussi
CAS effectue de façon indivisible l’opération « si la valeur à cette adresse est toujours la valeur attendue, la remplacer par la nouvelle valeur ». Si un autre thread a modifié la valeur entre la lecture et l’écriture, l’opération échoue ; on peut donc mettre à jour en vérifiant que la valeur n’a pas changé. Avec une boucle qui, en cas d’échec, relit, recalcule et retente le CAS, on met à jour une valeur partagée en toute sécurité sans verrou. L’instruction cmpxchg de x86 en est un exemple.
Continuer : 9 autres questions sur Multicœur et synchronisation