Multicœur et synchronisation
Dans un spinlock, pourquoi attendre la libération par des lectures ordinaires et n’utiliser l’instruction atomique que lorsque le verrou semble libre (test-and-test-and-set), plutôt que de tenter directement la modification par instruction atomique ?
- AParce que la lecture ordinaire est plus exacte que l’instruction atomique
- BParce qu’une instruction atomique ne peut être utilisée qu’une fois par programme
- CParce qu’une simple lecture peut attendre dans son propre cache, ce qui réduit fortement les allers-retours de la ligne de cache entre les cœurs
Afficher la réponse et l'explication
Réponse : C. Parce qu’une simple lecture peut attendre dans son propre cache, ce qui réduit fortement les allers-retours de la ligne de cache entre les cœurs
Une instruction atomique implique une écriture ; si les threads en attente l’exécutent de façon répétée, ils se disputent à chaque fois la ligne en état M et invalident sans cesse les copies des autres cœurs. Avec des lectures ordinaires, chaque cœur se contente de lire sa copie en état S dans son propre cache, sans aucun échange. Ce n’est que lorsque le verrou est libéré et que la valeur change que l’instruction atomique est utilisée pour le prendre.
Continuer : 9 autres questions sur Multicœur et synchronisation