Modern C++20: Multithreading Deep Dive & Concurrency Design
Modern C++20: Multithreading Deep Dive & Concurrency Design, available at $44.99, has an average rating of 4.25, with 105 lectures, 24 quizzes, based on 2 reviews, and has 1803 subscribers.
You will learn about 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 This course is ideal for individuals who are C++ developers with atleast 1-2 year experience of coding or C++ developers curious to understand the details of C++11 memory model or C++ developers exploring options to write high performance concurrent applications in C++ or C++ developers keen to catch up on Modern C++ concurreny and multhreading features like Coroutines. It is particularly useful for C++ developers with atleast 1-2 year experience of coding or C++ developers curious to understand the details of C++11 memory model or C++ developers exploring options to write high performance concurrent applications in C++ or C++ developers keen to catch up on Modern C++ concurreny and multhreading features like Coroutines.
Enroll now: Modern C++20: Multithreading Deep Dive & Concurrency Design
Summary
Title: Modern C++20: Multithreading Deep Dive & Concurrency Design
Price: $44.99
Average Rating: 4.25
Number of Lectures: 105
Number of Quizzes: 24
Number of Published Lectures: 105
Number of Published Quizzes: 24
Number of Curriculum Items: 129
Number of Published Curriculum Objects: 129
Number of Practice Tests: 2
Number of Published Practice Tests: 2
Original Price: $24.99
Quality Status: approved
Status: Live
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
Who Should Attend
- C++ developers with atleast 1-2 year experience of coding
- C++ developers curious to understand the details of C++11 memory model
- C++ developers exploring options to write high performance concurrent applications in C++
- C++ developers keen to catch up on Modern C++ concurreny and multhreading features like Coroutines.
Target Audiences
- C++ developers with atleast 1-2 year experience of coding
- C++ developers curious to understand the details of C++11 memory model
- C++ developers exploring options to write high performance concurrent applications in C++
- C++ developers keen to catch up on Modern C++ concurreny and multhreading features like Coroutines.
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:
-
Grasp the fundamentals of concurrency and the challenges of designing concurrent data structures.
-
Explore various concurrent data structures and select the most suitable one for your use case.
-
Learn about synchronization techniques and mechanisms in C++ for ensuring thread safety, including mutexes, condition variables, and atomics.
-
Understand different memory models, lock-free and wait-free data structure design, and principles of memory reclamation and garbage collection.
-
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:
-
Standardized support: Utilize C++20’s new features and enhancements for concurrent programming, including parallel algorithms, atomic operations, and memory models.
-
High-performance: Harness C++’s high-performance capabilities to create fast and efficient concurrent programs.
-
Memory model improvements: Leverage C++20’s new memory model to reason about concurrent program behavior and prevent subtle bugs.
-
Enhanced type safety: Take advantage of improved type safety in concurrent programs with features like the atomic_ref class.
-
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.
Course Curriculum
Chapter 1: Introduction
Lecture 1: Course Structure – Most lectures have code walkthroughs or tool demos
Lecture 2: [BEGINNER] Introduction to simplified hardware model used through the course.
Chapter 2: Modern C++ Memory Model : Available since C++11
Lecture 1: Memory Model guarantees
Lecture 2: External factors affecting the program execution workflow of a C++ program
Lecture 3: Sequential consistency definition in multithreaded applications
Lecture 4: Race condition in concurrency with regard to sequential consistency
Lecture 5: SC-DRF : Sequential Consistency (Data Race Free)
Lecture 6: Role of Modern C++ memory model in guarantee of SC-DRF
Chapter 3: Code Optimizations: Behind the scenes [C++ Memory Model]
Lecture 1: Simple optimization example
Lecture 2: Code walkthrough of issue with the concurrent execution of multithreaded code
Lecture 3: Optimization example with single threaded code
Lecture 4: Summary and general tips around optimization of concurrent code in modern C++
Chapter 4: Concurrency and barriers [C++ Memory Model]
Lecture 1: Thinking in Transactions
Lecture 2: The concept of critical section in concurrent and multithreaded applications
Lecture 3: Concurrency considerations while moving code out of critical sections
Lecture 4: Concurrency considerations while moving code inside of critical sections
Lecture 5: Concept of acquire and release barriers in concurrency memory models
Lecture 6: Considerations while choosing memory barriers while desiging for multithreading
Lecture 7: A closer look at barriers and their relation to sequential consistency
Lecture 8: Summary of memory barriers in concurrent applications
Lecture 9: Impact of external optimizations on concurreny in modern C++ applications
Chapter 5: Performance analysis of atomics data types in modern C++ [C++ Memory Model]
Lecture 1: Considerations while making performace measurements
Lecture 2: Code experiment recommended to be performed by students.
Lecture 3: Code demonstartion of behavior of atomic variables in practice
Lecture 4: Do atomic variables wait for each other?
Lecture 5: False sharing in concurrency and multithreading
Chapter 6: Compare and Swap in Modern C++ [C++ Memory Model]
Lecture 1: Introduction to compare and swap
Lecture 2: Example of compare and swap
Lecture 3: Pseudo code implementation of compare and exchange strong
Lecture 4: Pseudo code implementation of compare exchange strong – faster
Lecture 5: Compare and exchange weak – reason for spurios failures
Chapter 7: Memory ordering in multithreading with Modern C++ memory model
Lecture 1: Memory ordering basics in concurrency
Lecture 2: Memory ordering nuances
Lecture 3: Memory ordering and memory barriers in modern C++ language
Lecture 4: Acquire Barrier in Modern C++
Lecture 5: Release Barrier in Modern C++
Lecture 6: Using acquire and release barriers for synchronization in multithreading
Lecture 7: Using memory barriers as locks for efficient concurreny with modern C++
Lecture 8: Bidirectional barriers in Modern C++ memory model
Lecture 9: Why does compare and exchange in C++ have two parameters for memory ordering?
Chapter 8: Memory order : Software Design and performance considerations [C++ Memory Model]
Lecture 1: Purpose of memory order in modern C++ concurrency memory model
Lecture 2: Memory order as a tool to convey the C++ programmer's intent
Lecture 3: Memory order as programmer's intent : Example – 1
Lecture 4: Memory order as programmer's intent : Example – 2
Lecture 5: Memory order as programmer's intent : Example – 3
Lecture 6: Memory barriers and performance implications
Lecture 7: Sequential consistency and performance implications
Lecture 8: Design and implementation guidelines for using std::atomics
Lecture 9: When to use the atomics provided by the modern C++?
Chapter 9: Lock Free C++ Concurrent Design Fundamentals [Data Strcuture Design]
Lecture 1: Concepts of Wait free programming in modern C++
Lecture 2: Understanding Lock-Free Algorithms: Balancing Progress and Throughput
Lecture 3: Mastering Obstruction-Free Programming: A Guide to Lock-Free Algorithms
Lecture 4: Unlocking ACID Principles in Lock-Free Programming
Lecture 5: Essentials of Atomic Operations in C++11: A Practical Overview
Lecture 6: Advanced Atomic Operations in C++: Mastering Concurrency and Locking
Chapter 10: Double Check Locking Deep Dive to understand the Modern C++ & Concurrent Design
Lecture 1: Implementing Double-Check Locking in C++: From Single to Multi-threaded Program
Lecture 2: Code walkthrough of concurrent implementation using mutex and atomics of C++11
Lecture 3: Efficient Lazy Initialization in C++11: Leveraging Unique Pointers and Once Flag
Lecture 4: The surpirisngly cleanest concurrent initlaization solution!
Lecture 5: Optimizing Concurrent Data Structures in C++: Beyond Syntax to Effective Design
Chapter 11: Concurrent Singly Linked List analysis using Modern C++ Concurrency primitives
Lecture 1: Crafting Lock-Free Singly Linked Lists in C++: A Guide to Concurrent Data Struct
Lecture 2: Code walkthrough of the implementation using Modern C++ Concurrency features
Lecture 3: Code Walkthrough of Constructor, Destructor and Find function implementation
Lecture 4: Analysis of the push_front function of the concurrent singly linked list
Lecture 5: Analysis of the pop_front function design for a concurrent singly linked list
Chapter 12: ABA problem, RCU, Hazard pointers. Concurrent Design Solutions using Modern C++
Lecture 1: ABA problem in concurrent systems explained
Lecture 2: Solutions for ABA problems in multithreading environments
Lecture 3: Challenges and solutions for deletion in Concurrent data structures
Lecture 4: Concurrent Singly Linked List implemented using Reference Class & Modern C++
Lecture 5: Implementation details for using the Reference Class of concurrent linked list
Lecture 6: Concurreny analysis of mulithreading events in the refernce class
Instructors
-
RougeNeuron Academy By Subodh Chiwate
100,000+ Students | Decoding Software Careers in AI era
Rating Distribution
- 1 stars: 0 votes
- 2 stars: 0 votes
- 3 stars: 1 votes
- 4 stars: 0 votes
- 5 stars: 1 votes
Frequently Asked Questions
How long do I have access to the course materials?
You can view and review the lecture materials indefinitely, like an on-demand channel.
Can I take my courses with me wherever I go?
Definitely! If you have an internet connection, courses on Udemy are available on any device at any time. If you don’t have an internet connection, some instructors also let their students download course lectures. That’s up to the instructor though, so make sure you get on their good side!
You may also like
- Top 10 Video Editing Courses to Learn in November 2024
- Top 10 Music Production Courses to Learn in November 2024
- Top 10 Animation Courses to Learn in November 2024
- Top 10 Digital Illustration Courses to Learn in November 2024
- Top 10 Renewable Energy Courses to Learn in November 2024
- Top 10 Sustainable Living Courses to Learn in November 2024
- Top 10 Ethical AI Courses to Learn in November 2024
- Top 10 Cybersecurity Fundamentals Courses to Learn in November 2024
- Top 10 Smart Home Technology Courses to Learn in November 2024
- Top 10 Holistic Health Courses to Learn in November 2024
- Top 10 Nutrition And Diet Planning Courses to Learn in November 2024
- Top 10 Yoga Instruction Courses to Learn in November 2024
- Top 10 Stress Management Courses to Learn in November 2024
- Top 10 Mindfulness Meditation Courses to Learn in November 2024
- Top 10 Life Coaching Courses to Learn in November 2024
- Top 10 Career Development Courses to Learn in November 2024
- Top 10 Relationship Building Courses to Learn in November 2024
- Top 10 Parenting Skills Courses to Learn in November 2024
- Top 10 Home Improvement Courses to Learn in November 2024
- Top 10 Gardening Courses to Learn in November 2024