About this book
This book is an in-depth guide to the concurrency and multithreading facilities from the new C++ Standard, from the basic usage of std::thread, std::mutex, and std:: async, to the complexities of atomic operations and the memory model.
The first four chapters introduce the various library facilities provided by the library and show how they can be used.
Chapter 5 covers the low-level nitty-gritty of the memory model and atomic operations, including how atomic operations can be used to impose ordering constraints on other code, and marks the end of the introductory chapters.
Chapters 6 and 7 start the coverage of higher-level topics, with some examples of how to use the basic facilities to build more complex data structures—lock-based data structures in chapter 6, and lock-free data structures in chapter 7.
Chapter 8 continues the higher-level topics, with guidelines for designing multithreaded code, coverage of the issues that affect performance, and example implementations of various parallel algorithms.
Chapter 9 covers thread management—thread pools, work queues, and interrupting operations.
Chapter 10 covers the new parallelism support from C++17, which comes in the form of additional overloads for many of the Standard Library algorithms.
Chapter 11 covers testing and debugging—types of bugs, techniques for locating them, how to test for them, and so forth.