![]() |
Memory Model is a specification that describes how the program interacts with the memory. In C++ 11, a standardized memory model is created to provide the solution to issues surrounding concurrency, ordering, and multithreading. This framework specifies how memory is accessed and arranged in a C++ program. In this article, we will discuss the C++ 11 memory model, its features, and advantages. Need of Memory Model in C++The main reason why the standardized memory model was introduced in C++ 11 was to provide consistent and predictable behavior in multithreading applications. It provides modern solutions to concurrency problems by providing features such as atomic operations, memory order, etc, and standardizes the memory handling for C++ abstract machine to improve cross-platform and compiler compatibility. Features of C++ Memory ModelThe main features of the C++ memory model are as follows:
1. Atomic OperationsAtomic operations are the operations performed on the atomic object types. In C++, only atomic objects allows the concurrent read/write/access operation in multithreading application without causing any data races or undefined error. Atomics are defined inside <atomic> header. Example C++
Output Counter value: 20000 2. Sequential ConsistencySequential consistency is a high-level guarantee of the sequence of operations in several threads. It guarantees that the instructions in the program are executed in the same order as they are present in the source code. Example C++
Output res1: 0 3. Memory OrderingMemory ordering refers to the order in which the read and write operations are preformed. We have five types of memory ordering in C++:
ExampleC++
Output x and y are both 1 Advantages of the Memory Model in C++The standardized memory model provides the following advantages:
ConclusionConcurrent programming issues were resolved by the C++11 standard’s uniform memory model in C++. In a multithreaded environment, this model offers rules for allocating memory and coordinating memory operations. Its advantages include better concurrency support, more predictability, and greater portability. |
Reffered: https://www.geeksforgeeks.org
C++ |
Type: | Geek |
Category: | Coding |
Sub Category: | Tutorial |
Uploaded by: | Admin |
Views: | 13 |