This was the final chapter, dedicated to multithreading, which put a finishing touch on a story line that started in Chapter 5, Getting Started with the Parallel World. I started by describing all the bad things that can happen when writing parallel code, then spent one chapter showing the cumbersome TThread
, which makes multithreaded code such an unnecessary pain, and then in this chapter I finally moved on to the nice parts of the puzzle—tasks and patterns.
The chapter opened with a discussion of tasks and patterns—what they are and how they can be used to simplify multithreaded programming. For a bonus, I threw in a short treatise about variable capturing, which focused only on one problematic part—the capturing of a loop variable.
Then we looked at how we can use tasks to split a loop into multiple parallel loops. We saw that there's quite some work involved, particularly around task creation and setup. On the way, we also learned about the thread-pooling concept.
The last part...