2012 · 85 citations · 13 references
ComputingComputer EngineeringComputer ScienceCompilersComputer ArchitectureProgramming LanguagesConcurrency AnalysisConcurrent ModelingConcurrent ProgrammingMemory Consistency ModelsShared-memory MultiprocessingSynchronization PrimitivesAtomic ModelsConcurrency PrimitivesConcurrency SemanticsConcurrency TheoryConsistencyMemory ArchitectureRelaxed Memory ModelsSequential Consistency
The upcoming C and C++ revised standards add concurrency to the languages, for the first time, in the form of a subtle *relaxed memory model* (the *C++11 model*). This aims to permit compiler optimisation and to accommodate the differing relaxed-memory behaviours of mainstream multiprocessors, combining simple semantics for most code with high-performance *low-level atomics* for concurrency libraries. In this paper, we first establish two simpler but provably equivalent models for C++11, one for the full language and another for the subset without consume operations. Subsetting further to the fragment without low-level atomics, we identify a subtlety arising from atomic initialisation and prove that, under an additional condition, the model is equivalent to sequential consistency for race-free programs.
13
Foundations of the C++ concurrency memory model
Hans‐J. Boehm, Sarita V. Adve · 2008 · 498 citations
A Formally Verified Compiler Back-end
Xavier Leroy · Journal of Automated Reasoning · 2009 · 487 citations · Full text
Peter Sewell, Susmit Sarkar, Scott Owens et al. · Communications of the ACM · 2010 · 457 citations