Strongly Happens Before en C++20 : Démêler le modèle mémoire

2025-09-01

Cet article explore en détail la relation « strongly happens before » récemment introduite en C++20, qui résout un problème complexe du modèle mémoire de C++. À l’aide d’un exemple simple de programme multithreadé, l’auteur explique progressivement comment l’ordre de modification, l’ordre de cohérence et la relation « strongly happens before » contraignent l’ordre d’exécution concurrente. L’article analyse également pourquoi certaines exécutions apparemment contraires au modèle mémoire de C++ sont autorisées sur les architectures Power et explique comment la relation « strongly happens before » corrige ces incohérences, garantissant finalement un ordre total unique pour toutes les opérations `memory_order::seq_cst`.

Développement modèle mémoire