Advanced C++: Multithreading and Concurrent Data Structures

Concurrency, multithreading,C++20, C++17, C++11 Atomics, SC-DRF, C++ Memory Model, Data Structures, Concurrent Design

4.25 (2 reviews)
Udemy
platform
English
language
Programming Languages
category
Advanced C++: Multithreading and Concurrent Data Structures
1,369
students
5.5 hours
content
Apr 2024
last update
$44.99
regular price

What you will learn

Details of C++ memory model on which atomics are built

Concepts of memory barriers and memory order in C++

Using Modern C++ to design lock free algorithms with C++ atomics and memory model

Importance of sequential consistency in concurrency

Getting high performane using C++ memory model

External factors influencing performance of atomics

Tools to use in production while working with C++ in production

Why take this course?

Learn about memory models, atomics, and synchronization primitives in C++ and how to use them to write correct, efficient, and high-performance concurrent programs.

This intermediate-level course is designed for experienced C++ developers who want to deepen their understanding of concurrency and memory models in C++. You will learn about the C++ memory model, including the Sequential Consistency-Data Race Free (SC-DRF) guarantee, and how to use it to reason about the behavior of concurrent programs. You will also learn about different memory barriers and how to use them to enforce ordering constraints between memory accesses.

In addition, you will learn about atomics and how to use them to implement efficient synchronization mechanisms in your programs. You will explore the different types of atomics available in C++, including lock-free and wait-free algorithms, and learn how to use them effectively.

The course also covers false sharing in caches, which can lead to significant performance degradation in multi-threaded programs. You will learn how to identify and avoid false sharing in your code.


This course will help you dive deep into designing and implementing efficient concurrent data structures using the latest C++ features and best practices. These are skills that tools like ChatGPT will take years to develop.

The course expects the students to implement the discussed code independently. The course targets self-starters and intermediate-skilled programmers who are interested in nuances of design beyond copy-pasting assignments.

Concurrency is crucial in today's software development landscape, and creating data structures that multiple threads can safely and efficiently access is essential. In this course, you'll:

  1. Grasp the fundamentals of concurrency and the challenges of designing concurrent data structures.

  2. Explore various concurrent data structures and select the most suitable one for your use case.

  3. Learn about synchronization techniques and mechanisms in C++ for ensuring thread safety, including mutexes, condition variables, and atomics.

  4. Understand different memory models, lock-free and wait-free data structure design, and principles of memory reclamation and garbage collection.

  5. Work on practical examples and hands-on exercises to reinforce your knowledge, and design and implement concurrent data structures like queues, stacks, hash tables, and trees using the latest C++ features.

By the end of this course, you'll be well-equipped to design and implement high-performance concurrent data structures in C++ that can scale on multi-core systems and handle high levels of concurrency.

Discover the benefits of learning concurrency with C++20:

  1. Standardized support: Utilize C++20's new features and enhancements for concurrent programming, including parallel algorithms, atomic operations, and memory models.

  2. High-performance: Harness C++'s high-performance capabilities to create fast and efficient concurrent programs.

  3. Memory model improvements: Leverage C++20's new memory model to reason about concurrent program behavior and prevent subtle bugs.

  4. Enhanced type safety: Take advantage of improved type safety in concurrent programs with features like the atomic_ref class.

  5. Practical applications: Boost your competitiveness in the job market and develop high-performance software that can handle a high degree of concurrency.

Finally, the course provides an overview of performance analysis tools such as perf, Valgrind, Intel Vtune, Google Orbit, and gdb, which can be used to profile, debug, and optimize your code.


Throughout the course, you will work on practical examples and can pursue hands-on exercises independently to reinforce your understanding of the material. By the end of this course, you will have solid experience with memory models and concurrency in C++ and be able to write correct, efficient, high-performance concurrent programs.


Screenshots

Advanced C++: Multithreading and Concurrent Data Structures - Screenshot_01Advanced C++: Multithreading and Concurrent Data Structures - Screenshot_02Advanced C++: Multithreading and Concurrent Data Structures - Screenshot_03Advanced C++: Multithreading and Concurrent Data Structures - Screenshot_04

Reviews

Abhijeet
December 16, 2023
overall I liked the content so far. I would expect some assignements at the end of a complex topic. Course is helping me further explore the memory order and barriers, which is a terse topic. Some slides have explanation getting dragged on trivial things.

Charts

Price

Advanced C++: Multithreading and Concurrent Data Structures - Price chart

Rating

Advanced C++: Multithreading and Concurrent Data Structures - Ratings chart

Enrollment distribution

Advanced C++: Multithreading and Concurrent Data Structures - Distribution chart
5235264
udemy ID
3/26/2023
course created date
3/28/2023
course indexed date
Bot
course submited by