April 2020
Intermediate to advanced
412 pages
9h 58m
English
After we build and run our application, we can see that its output is similar to the output of the thread application. However, there are also noticeable differences:

Firstly, the output is not garbled. Secondly, we can see a clear order—no worker is interrupted by another worker, and each begin is followed by the corresponding end. The difference lies in the highlighted fragments of the source code. We create a global mutex m:
std::mutex m;
Then, we use lock_guard to protect our critical section of code, which starts from the line that prints Worker X begins and ends at the line that prints Worker X ends.
lock_guard is a ...