The next versions of C++ (C++0x) and of C (C1X) will have new
concurrency features, aiming to support high-performance code with
well-defined semantics. Unfortunately, as we near the end of the
long standardization process, not all has been well.
Unsurprisingly, the prose specification style of the draft standards
is poorly suited to describe the complex design of the relaxed
memory model, and in fact there have been significant problems.
I will discuss work on formalization of the memory model, what was
broken, and some resulting improvements to the C++0x draft standard.
In addition I will present a tool, Cppmem, for graphically exploring
the semantics of small concurrent C++0x programs, and describe a
proof of the correctness of a compilation strategy targeting
Mathematizing C++ Concurrency
University of Cambridge