Concurrency with Modern C++

Instructor

Rainer Grimm

I've worked as a software architect, team lead, and instructor since 1999. In 2002, I created company-intern meetings for further education and have given training courses since 2002. My first tutorials were about proprietary management software, but I began teaching Python and C++ soon after. In my spare time, I like to write articles about C++, Python, and Haskell, and to speak at conferences. I publish weekly on my English blog [Modernes Cpp] (https://www.modernescpp.com/) and the [German blog] (https://www.grimm-jaud.de/index.php/blog), hosted by Heise Developer.

Since 2016, I'm an independent instructor giving seminars about modern C++ and Python. In the last ten years, I published several books in various languages on modern C++ and concurrency, in particular. Due to my profession, I always search for the best way to teach modern C++.

Course Description

This class gives you a detailed insight into the multithreading facilities of C++. Starting with the foundation in C++11, continuing with the parallel STL in C++17, and closing with the concurrency features 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++17 compiler. You will get in return the training material consisting of the presentation, the exercises, and the solutions to the exercises. Additionally, each participant gets a coupon for my LeanPub book "Concurrency with Modern C++".

Course Topics

  • Multithreading
    • Threads
    • Shared Data
    • Mutexes and Locks
    • Thread-safe Initialization
    • Thread-Local Data
    • Condition Variables
    • Tasks (Promises and Futures)
  • The Memory Model
    • The Contract
    • Atomics
    • The Synchronization 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
  • C++20
    • std::jthread
    • Atomic Smart Pointers
    • Latches and Barriers
    • Coroutines
    • Semaphores

Dates

The workshop takes place on the weekend prior to the start of the conference (July 16 & July 17). Find out more details about fees and about the schedule here.

Where

Toronto

When

July 17-19, 2022

LinkedIn

CppNorth Group