C++20s Strongly Happens Before: Entwirren des Speichermodells

2025-09-01

Dieser Artikel befasst sich eingehend mit der in C++20 neu eingeführten Beziehung "Strongly Happens Before", die ein kniffliges Problem im C++-Speichermodell löst. Anhand eines einfachen Beispiels für ein Multithreading-Programm erklärt der Autor schrittweise, wie die Änderungsreihenfolge, die Kohärenzreihenfolge und die Beziehung "Strongly Happens Before" die Reihenfolge der gleichzeitigen Ausführung einschränken. Der Artikel analysiert auch, warum bestimmte Ausführungen, die scheinbar gegen das C++-Speichermodell verstoßen, auf Power-Architekturen zulässig sind, und erklärt, wie "Strongly Happens Before" diese Inkonsistenzen behebt und letztendlich eine einzige Gesamtordnung für alle `memory_order::seq_cst`-Operationen gewährleistet.

Entwicklung