In this course we will introduce how to program for concurrency in
C++, taking advantage of modern CPUs ability to run multi-threaded
programs on different CPU cores. Firstly, we will explore the new
concurrency features of C++11 itself, which will also serve as a
general introduction to multi-threaded programming. Students will
learn the basics of asynchronous execution, thread spawning,
management and synchronisation. Some elementary considerations about
deadlocks and data races will be introduced, which will illustrate the
common problems that can arise when programming with multiple
threads. After this the Threaded Building Block template library will
be introduced. We shall see how the features of this library allow
programers to exploit multi-threading at a higher level, not needing
to worry about so many of the details of thread management.
Students should be familiar with C++ and the standard template
library. Some familiarity with makefiles would be useful.