Mastering C++ Multithreading: Write robust, concurrent, and parallel applications