Summary: Foundations of the C++ Concurrency Memory Model
Sarita V. Adve
University of Illinois at Urbana-Champaign
Currently multi-threaded C or C++ programs combine a single-
threaded programming language with a separate threads library.
This is not entirely sound .
We describe an effort, currently nearing completion, to address
these issues by explicitly providing semantics for threads in the
next revision of the C++ standard. Our approach is similar to
that recently followed by Java , in that, at least for a well-
defined and interesting subset of the language, we give sequentially
consistent semantics to programs that do not contain data races.
Nonetheless, a number of our decisions are often surprising even to
those familiar with the Java effort:
· We (mostly) insist on sequential consistency for race-free pro-