Multicœur et synchronisation
Quelle description du problème ABA, qui affecte les structures de données sans verrou utilisant CAS, est correcte ?
- ALes deux threads A et B ne peuvent plus s’exécuter qu’en alternance
- BLorsque la valeur passe de A à B puis revient à A, CAS ne remarque pas le changement et réussit
- CLes deux verrous A et B sont pris dans l’ordre inverse
Afficher la réponse et l'explication
Réponse : B. Lorsque la valeur passe de A à B puis revient à A, CAS ne remarque pas le changement et réussit
Si le pointeur de tête d’une liste chaînée vaut A, il peut arriver que, pendant qu’un thread lit A et prépare son CAS, un autre thread retire A, effectue une opération sur B, puis réinsère un nœud à la même adresse A. Le CAS réussit puisque la valeur est toujours A, mais le contenu de la liste a déjà changé et la structure est corrompue. On l’évite en associant au pointeur un compteur de mises à jour comparé en même temps, ou en utilisant LR/SC.
Continuer : 9 autres questions sur Multicœur et synchronisation