Abstract
This class gives you a detailed insight into the multithreading facilities of C++11 and C++14, and the parallel algorithms which we got with C++17. If possible, we will have a more in-depth look into the C++ memory model consisting of the atomics and the various memory models in C++. This insight will provide you with a better understanding of the general concurrency features of C++.
Prerequisite
Participants should have a basic knowledge of the C++ language and the fundamentals of multithreading. In the class, I will give you a concise introduction to the topic. This introduction provides the starting point for the exercises; therefore, you should bring your laptop with you including a C++11 or C++14 compiler. You will get in return the training material consisting of the presentation, the exercises, and the solutions to the exercises.
Agenda:
Multithreading
Threads
Shared Data
Mutexes and Locks
Thread-safe Initialisation
Thread-Local Data
Condition Variables
Tasks (Promises and Futures)
The Memory Model
The Contract
Atomics
The Synchronisation and Ordering Constraints -- Sequential Consistency -- Acquire-Release Semantic -- Relaxed Semantic
Parallel Algorithms of the Standard Template Library (C++17)
Execution Policies
Algorithms -- The New Algorithms