This tutorial is about multi-threading in C++. Concurrency is already important in some software domains, but with the commoditisation of true multi-core CPUs it will become increasingly important for wider application development as well. Respected voices say the concurrency revolution will be more disruptive than the object oriented revolution[1], and I believe them.

As concurrency moves into the mainstream, there will be a great competitive advantage for companies and individuals able to harness the power of parallellism effectively and safely. Since it is so very difficult to debug poorly executed concurrent programs, there is also a nasty quagmire waiting for those who cannot.

The purpose of this tutorial is to introduce techniques for safe and efficient concurrent programming. We'll begin by reviewing the basic concepts, and then move on to cover concurrency design patterns.


1. Sutter, H. & Laurus, J. (2005). Software and the Concurrency Revolution. ACM Queue.