Multicœur et synchronisation
Pourquoi _Atomic de C11 et std::atomic de C++11 permettent-ils de spécifier un ordre mémoire ?
- APour indiquer où placer la variable atomique en mémoire
- BParce qu’en ne choisissant que les garanties d’ordre nécessaires, on évite les barrières inutiles et préserve les performances
- CPour fixer à l’avance l’ordre d’exécution des threads
Afficher la réponse et l'explication
Réponse : B. Parce qu’en ne choisissant que les garanties d’ordre nécessaires, on évite les barrières inutiles et préserve les performances
Par défaut, les opérations sur variables atomiques sont en cohérence séquentielle (memory_order_seq_cst), la plus intuitive mais au coût de barrières plus lourd. Un simple compteur n’a besoin que d’indivisibilité, d’où relaxed ; un drapeau de transmission de données se contente d’acquire et release. Le compilateur génère selon la spécification les instructions minimales nécessaires au modèle mémoire du CPU.
Continuer : 9 autres questions sur Multicœur et synchronisation