C++ memory model
The classic C++ was essentially a single threaded language. Even though people were writing multithread programs in C++, they were using respective platform threading facilities to write them. Modern C++ can be considered a concurrent programming language. The language standard provides a standard thread and task mechanism (as we have already seen) with the help of standard libraries. Since it is a part of the standard library, the language specification has defined how things should behave across the platform in a precise manner. Having a consistent platform-agnostic behavior for threads, tasks, and so on is a massive challenge that the standard committee handled really well. The committee designed and specified a standard memory model for achieving consistent behavior while the program is running. The memory model consists of two aspects:
- Structural aspects, which relate to how data is laid out in memory
- Concurrency aspects, which deal with the concurrent access of memory...