Concurrency with Modern C++

Program Overview

I’m happy to provide more details about my mentoring program, “Concurrency with Modern C++”.

Level: Advanced

Program Description

My general idea of this is straightforward. I will teach you what you should know about concurrency with modern C++, starting with C++11 and ending with C++20.

Each week, you should master a new station. To master a station, you have to invest about three hours. Therefore, you can integrate my program into your workday.

Features

  • 200 video lectures
  • 20 one-hour sessions
  • Plus 50 posts

Extras

  • Q&A LIVE sessions
  • All media is offline available
  • Instant access via E-Mail

Program structure

The mentoring program consists of 16 stations. For each station, you have to invest at least 3 hours per week. Therefore, you can integrate my program into your workday.

16 Stations

  1. Introduction
    • The Contract
    • Preparation
  2. Threads
    • std::thread
    • std::jthread
    • Shared Data
    • Mutexes
    • Locks
  3. Concurrency Challenges
    • Program Invariants
    • Data Races
    • Deadlocks
    • False Sharing
    • Lifetime Issues
  4. Thread Details
    • Thread-Local Data
    • Thread-Safe Initialization
    • Synchronized Output Streams
  5. Synchronization and Coordination
    • Condition Variables
    • Semaphores
    • Latches and Barriers
  6. Cooperative Interruption
    • std::stop_source, std::stop_token, and std::stop_callback
    • std::jthread
    • std::condition_variable_any
  7. Tasks
    • Promise and Futures
    • std::async
    • std::packaged_task
    • std::promise and std::future
  8. Coroutines
    • Characteristics
    • The Framework
    • Awaitables and Awaiters
    • The Workflows
  9. Coroutines
    • A Scheduler
    • Producer-Consumer
  10. Parallel Algorithms of the Standard Template Library
    • Execution Policies
    • Algorithms
    • Compiler Support
    • Performance
  11. Atomics
    • Introduction
    • std::atomic_flag
    • std::atomic
    • std::atomic_ref
  12. Synchronization and Ordering Constraints
    • Six different Memory Orderings
    • Sequential Consistency
    • Acquire-Release Semantics
    • Acquire-Consume Semantics
    • Relaxed Semantics
  13. Case Studies
    • Calculating the Sum of a Vector
    • Thread-Safe Initialization of a Singleton
    • Ongoing Optimization with CppMem
  14. Synchronization Patterns: Dealing with Mutation
    • Copied Value
    • Thread-Specific Storage
    • Future
  15. Synchronization Patterns: Dealing with Sharing
    • Scoped Locking
    • Strategized Locking
    • Thread-Safe Interface
    • Guarded Suspension
  16. Concurrent Architecture
    • Active Object
    • Monitor Object

One Station Concept

Each mentoring program consists of 16 to 30 stations you have to master. A station is one week long, and you should invest about three hours/week. Therefore, you can integrate my program into your workday. Each station consists of theory, practice, and mentoring:

Theory

  • Pure theory: 10 slides (video)
  • Applied theory: 5 examples (video)
  • Additional: Posts and Training videos

Practice

  • Practical exercises (videos)
  • Sample solutions to the exercises (video)
  • Active C++ community in moderated forums

Mentoring

  • Each week: Live Q&A session based on Forum questions
  • One-to-one mentoring at the end of the mentoring program if requested

Sample Station

Try out Station 11 of my Mentoring Program “Concurrency with modern C++”: Introduction, std::atomic_flag, std::atomic, and std::atomic_ref.

Practice

Please click the button above to go to the LIVE view of my mentoring program.

Practice

Please click the button above to go to the LIVE view of my mentoring program.

Practice

Please click the button above to go to the LIVE view of my mentoring program.

Practice

Please click the button above to go to the LIVE view of my mentoring program.

The Ideal Mentee

First, you need a good knowledge of C++ and want to become fluent in patterns. If you don’t consider yourself a good C++ programmer, you should first master my basic mentoring program, Fundamenalts for C++ Professionals.

You have to invest at least three hours a week and can, therefore, integrate my program into your workday. In the ideal case, your company supports you with time and money.

Here are a few participant profiles I have in mind:

  • Professionals who want to master patterns
  • C++ developers who want to make their next career step
  • C++ developers interested in good software design

Mentee Membership and Community Membership

When you master your mentoring program, you can extend your Mentee Membership with a Community Membership.

Mentee Membership

  • Member of a mentoring program
  • Includes the Community Membership

Community Membership

  • Access to the previous mentoring program
  • You cannot participate in the Q&A sessions, but you can watch recorded Q&A sessions
  • Becomes a community member if requested
  • Community Membership is €150 (lifetime)

My other Mentoring Programs

Fundamentals for C++ Professionals

Level: Beginners

Design Patterns and Architectural Patterns with C++

Level: Intermediate

C++20: Get the Details

Level: Intermediate