Multithreading is hard is the mantra you will hear very often. But, as we learned in Chapter 1, Understanding Performant Programs, if we want to use the advances in processor design, we must parallelize our programs! Otherwise, we will only use a single core, which will normally utilize only a fraction of our computer's CPU.
So, how can we speed up our programs? Well, before we can answer this question, we will first have a look at the costs of several concurrency constructs. Not again, you say? We have discussed so much of that stuff, Qt or not, already, you say? We have to see some cool techniques at last, you say? Sorry to disappoint you, but success in performance optimization comes from deep understanding. So, let's have a look at those costs, shall we?