Foundations of the C++ concurrency memory model
Foundations of the C++ concurrency memory model
复制标题
DOI:
10.1145/1379022.1375591
复制
发表时间:
2008-06-01
影响因子:
--
通讯作者:
Adve, Sarita V.
中科院分区:
文献类型:
--
作者:
Boehm, Hans-J.;Adve, Sarita V.
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 programs, 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 try lock than existing languages or libraries, allowing us to promise sequential consistency with an intuitive race definition, even for programs with try lock.This paper describes the simple model we would like to be able to provide for C++ threads programmers, and explain how this, together with some practical, but often under-appreciated implementation constraints, drives us towards the above decisions.