Concurrency with Modern C++ [2018 Class Archive]

“Concurrency with Modern C++” is a two-day training course with programming examples taught by Rainer Grimm. It is offered at the Meydenbauer Conference Center from 9AM to 5PM on Saturday and Sunday, September 22nd and 23rd, 2018 (immediately prior to the conference). Lunch is included.

Course Description

This class gives you a detailed insight into the multithreading facilities of C++11 and C++14, the parallel algorithms which we got with C++17, and the new way of concurrency, we will get with high probability in C++20.

Additionally, we will have a more in-depth look into the C++ memory model consisting of the atomics and the various memory orders in C++. This insight will provide you with a better understanding of the general concurrency features of C++.

Prerequisites

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.

Course Topics

  • 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
    • std::memory_order_consume
    • Relaxed Semantic
  • Parallel Algorithms of the Standard Template Library (C++17)
    • Execution Policies
    • Algorithms
      • The New Algorithms
  • The Future: C++20 (Will change due to the difficulty to predict the future)
    • Atomic Smart Pointers
    • Extended Futures
    • Latches and Barriers
    • Coroutines
    • Transactional Memory
    • Task Blocks

Course Instructor

Rainer GrimmRainer Grimm has worked as a software architect, team lead and instructor for about 20 years. In his spare time he likes to write articles about C++, Python, and Haskell, but he also likes to speak at conferences. He publishes very often on his blog “Modern C ++“. Now he is a trainer giving seminars on Modern C++ and Python. His books “C ++ 11 für Programmierer”, “C ++”, “C ++ – Standardbiliothek” , “The C++ Standard Library” and “Concurrency with Modern C++” were published by O’Reilly and Leanpub.