Modern C++ Concurrency: Get the most out of any machine

Explore modern C++ concurrency, from C++11 to C++20, combining theory with practice. Gain insights into parallel algorithms, co-routines, and best practices through interactive examples and real-world scenarios.

Advanced

140 Lessons

14h

Certificate of Completion

Explore modern C++ concurrency, from C++11 to C++20, combining theory with practice. Gain insights into parallel algorithms, co-routines, and best practices through interactive examples and real-world scenarios.

AI-POWERED

Explanations

AI-POWERED

Explanations

This course includes

107 Playgrounds

This course includes

107 Playgrounds

Course Overview

"Concurrency with Modern C++" is a journey through the present and upcoming concurrency features in C++. - C++11 and C++14 have the basic building blocks for creating concurrent and parallel programs. - With C++17 we have the parallel algorithms from the Standard Template Library (STL). That means that most STL based algorithms can be executed sequentially, parallel, or vectorized. - The concurrency story in C++ goes on. With C++20 we can hope for extended futures, co-routines, transactions, and more. ...Show More

Course Content

1.

Introduction

Get familiar with Modern C++ concurrency concepts through practical and theoretical examples.
2.

A Quick Overview

Look at C++ concurrency evolution, covering C++11 to C++20, practical multithreading, and challenges.
3.

Memory Model: The Contract

Break apart the crucial aspects of the C++ memory model and its challenges.
4.

Memory Model: Atomics

Grasp the fundamentals of C++ atomic operations, memory models, and thread synchronization techniques.
5.

Memory Model: Synchronization and Ordering Constraints

Dig deeper into C++'s memory model for synchronization, ordering constraints, and atomic operations.
6.

Memory Model: Fences

5 Lessons

Tackle memory fences to ensure proper synchronization and prevent unintended operation reordering.
7.

Multithreading: Threads

9 Lessons

Build on managing threads and synchronization in C++ to ensure safe concurrency.
8.

Multithreading: Shared Data

12 Lessons

Step through managing shared data with mutexes, locks, and thread-safe initialization in multithreading.
9.

Multithreading: Local Data

1 Lesson

Get started with thread-local data for isolated, race-free multithreaded programs.
10.

Multithreading: Condition Variables

2 Lessons

Go hands-on with condition variables for effective thread synchronization and avoid common issues.
11.

Multithreading: Tasks

11 Lessons

Grasp the fundamentals of utilizing tasks, promises, and futures for efficient multithreaded programming in C++.
12.

Case Study: Calculate Sum of a Vector

15 Lessons

Explore efficient vector summation methods, including single-threaded and multithreaded approaches with locks, atomics, and tasks.
13.

Case Study: Thread-Safe Initialization of a Singleton

9 Lessons

Follow the process of implementing thread-safe singleton patterns, focusing on Meyers Singleton.
14.

Case Study: Ongoing Optimization with CppMem

9 Lessons

Practice using CppMem for understanding C++ concurrency, memory behavior, and optimizing programs.
15.

Parallel Algorithms of the Standard Template Library

5 Lessons

Break down STL's parallel algorithms, execution policies, and functional programming in C++.
16.

The Future: C++20

11 Lessons

Walk through new C++20 features for concurrency, including atomic smart pointers, extended futures, transactional memory, and coroutines.
17.

Coding Examples

9 Lessons

Go hands-on with concurrency examples to understand and resolve common issues.
18.

Best Practices

5 Lessons

Enhance your skills in minimizing data sharing, effective memory models, and thread safety.
19.

The Time Library

7 Lessons

Take a closer look at time points, durations, clocks, and time management in C++ multithreading.
20.

Glossary

2 Lessons

Focus on understanding key C++ concurrency terms, coding, and execution environments.
21.

About the Author

1 Lesson

Approach the author's extensive industry experience and contributions to modern programming.

Course Author

Add a deep mastery of C++ to your skillset, and make yourself a more in-demand developer.


Path Cover

Learn C++ for Programmers

Learn C++ from scratch, and get hands-on with one of the most popular programming languages in the world.
Explore Path

7 Modules

Trusted by 1.4 million developers working at companies

Anthony Walker

@_webarchitect_

Emma Bostian 🐞

@EmmaBostian

Evan Dunbar

ML Engineer

Carlos Matias La Borde

Software Developer

Souvik Kundu

Front-end Developer

Vinay Krishnaiah

Software Developer

Eric Downs

Musician/Entrepeneur

Kenan Eyvazov

DevOps Engineer

Anthony Walker

@_webarchitect_

Emma Bostian 🐞

@EmmaBostian

Hands-on Learning Powered by AI

See how Educative uses AI to make your learning more immersive than ever before.

Instant Code Feedback

Evaluate and debug your code with the click of a button. Get real-time feedback on test cases, including time and space complexity of your solutions.

AI-Powered Mock Interviews

Adaptive Learning

Explain with AI

AI Code Mentor