Affiliation:
1. University of Cambridge, Cambridge, United Kingdom
Abstract
Shared-memory concurrency in C and C++ is pervasive in systems programming, but has long been poorly defined. This motivated an ongoing shared effort by the standards committees to specify concurrent behaviour in the next versions of both languages. They aim to provide strong guarantees for race-free programs, together with new (but subtle) relaxed-memory atomic primitives for high-performance concurrent code. However, the current draft standards, while the result of careful deliberation, are not yet clear and rigorous definitions, and harbour substantial problems in their details.
In this paper we establish a mathematical (yet readable) semantics for C++ concurrency. We aim to capture the intent of the current (`Final Committee') Draft as closely as possible, but discuss changes that fix many of its problems. We prove that a proposed x86 implementation of the concurrency primitives is correct with respect to the x86-TSO model, and describe our Cppmem tool for exploring the semantics of examples, using code generated from our Isabelle/HOL definitions.
Having already motivated changes to the draft standard, this work will aid discussion of any further changes, provide a correctness condition for compilers, and give a much-needed basis for analysis and verification of concurrent C and C++ programs.
Publisher
Association for Computing Machinery (ACM)
Subject
Computer Graphics and Computer-Aided Design,Software
Reference33 articles.
1. Memory models
2. Fences in Weak Memory Models
3. ARM. ARM Architecture Reference Manual (ARMv7-A and ARMv7-R edition). April 2008. ARM. ARM Architecture Reference Manual (ARMv7-A and ARMv7-R edition). April 2008.
4. Foundations of the C++ concurrency memory model
5. P. Becker editor. Programming Languages --- C++. Final Committee Draft. 2010. ISO/IEC JTC1 SC22 WG21 N3092. P. Becker editor. Programming Languages --- C++. Final Committee Draft. 2010. ISO/IEC JTC1 SC22 WG21 N3092.
Cited by
52 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Robustness against the C/C++11 Memory Model;Proceedings of the 33rd ACM SIGSOFT International Symposium on Software Testing and Analysis;2024-09-11
2. Decidable Verification under Localized Release-Acquire Concurrency;Lecture Notes in Computer Science;2024
3. Formalization of Process-oriented Programs in poST Using Isabelle/HOL;2023 IEEE 24th International Conference of Young Professionals in Electron Devices and Materials (EDM);2023-06-29
4. Implementing and verifying release-acquire transactional memory in C11;Proceedings of the ACM on Programming Languages;2022-10-31
5. CAAT: consistency as a theory;Proceedings of the ACM on Programming Languages;2022-10-31