Chapter 1. Hello, world of concurrency in C++!
Figure 1.2. Task switching of four tasks on two cores
Figure 1.3. Communication between a pair of processes running concurrently
Figure 1.4. Communication between a pair of threads running concurrently in a single process
Chapter 3. Sharing data between threads
Chapter 4. Synchronizing concurrent operations
Figure 4.1. Using multiple std::shared_future objects to avoid data races
Chapter 5. The C++ memory model and operations on atomic types
Figure 5.1. The division of a struct into objects and memory locations
Figure 5.2. Enforcing an ordering between nonatomic operations using atomic operations
Figure 5.3. Sequential consistency and happens-before
Figure 5.4. Relaxed atomics and happens-before
Figure 5.5. The notebook for the man in the cubicle
Figure 5.6. Acquire-release and happens-before
Figure 5.7. The release sequence for the queue operations from listing 5.11
Chapter 6. Designing lock-based concurrent data structures
Chapter 7. Designing lock-free concurrent data structures
Chapter 8. Designing concurrent code
Figure 8.1. Distributing consecutive chunks of data between threads
3.145.17.140