The foundation of multithreading is a well-defined memory model. From the reader’s perspective, it consists of two aspects. First, there is the enormous complexity of it, which often contradicts our intuition. Second, it helps to get a deeper insight into the multithreading challenges. In the first approach, we want to give you a mental model. That being said, the C++ memory model defines a contract.