... devices, are now increasingly prevalent. The increased computing power of these machines comes not from running a single task faster, but from running multiple tasks in parallel. In the past, programmers ... building blocks. In this chapter, we'll start by covering the basics: launching a thread, waiting for it to finish, or running it in the background. We'll then proceed to look at passing ... complete, this can be done by calling join() on the associated std::thread instance. In the case of listing 2.1, inserting a call to my_thread.join() before the closing brace of the function body...