Tutor HuntResources C Plus Plus Resources
C++ Concurrency Memory Model
Concurrency Memory Model
Date : 22/04/2014
Author Information
Uploaded by : Jems
Uploaded on : 22/04/2014
Subject : C Plus Plus
Currently multi-threaded C or C++ programs combine a single-
threaded programming language with a separate threads library.
This is not entirely sound [7].
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 [25], 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-
grams, in spite of implementation issues that came to light after
the Java work.
We give
no
semantics to programs with data races. There are no
benign C++ data races.
We use weaker semantics for
trylock
than existing languages
or libraries, allowing us to promise sequential consistency with
an intuitive race definition, even for programs with
trylock
.
This paper describes the simple model we would like to be able
to provide for C++ threads programmers, and explain how this, to-
gether with some practical, but often under-appreciated implemen-
tation constraints, drives us towards the above decisions.
Categories and Subject Descri ptors
D.3.3 [
Programming Lan-
guages
]: Language Constructs and Features-Concurrent Pro-
gramming Structures; D.1.3 [
Programming Techniques
]: Concur-
rent Programming-Parallel Programming; B.3.2 [
Memory Struc-
tures
]: Design Styles-Shared Memory
General Terms
languages, standardization, reliability
Keywords
Memory consistency, memory model, sequential con-
sistency, C++, trylock, data race
This resource was uploaded by: Jems