Writing concurrent applications is becoming the standard because of the increased number of processor cores in today’s machines. Having a solid understanding of mechanisms to run multiple units of work in parallel and to synchronize between them is an essential piece of knowledge for the modern programmer.
In this chapter, you learned about threads and thread pools to run work in parallel. You also explored how to use various locking and synchronization primitives to coordinate among those workers. The next chapter covers task and data parallelism.