Tags
Language
Tags
November 2024
Su Mo Tu We Th Fr Sa
27 28 29 30 31 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

Practical Concurrent Data Structure Design With Modern C++

Posted By: ELK1nG
Practical Concurrent Data Structure Design With Modern C++

Practical Concurrent Data Structure Design With Modern C++
Published 3/2023
MP4 | Video: h264, 1280x720 | Audio: AAC, 44.1 KHz
Language: English | Size: 792.99 MB | Duration: 2h 27m

Concurrency, Multithreading, Data Structures, Design Patterns, C++11, C++14, C++17, C++20, Architecture, Code review tip

What you'll learn

Designing concurrent data structures using Modern C++

Using C++ memory model to build lock free data strcutures

Using the Modern C++ features to build high performance data structures

Pitfalls and challenges to avoid while designing concurrent systems using C++

Requirements

Should be aware the C++ concurrency syntax

Should be able to compile codes independently

No domain specific niche knowledge required

Willing to followup syntax on cppreference website and tryout snippets independently

Description

Welcome to "Practical Concurrent Data Structure Design using Modern C++"!In this course, you will learn how to design and implement efficient concurrent data structures in C++ using the latest techniques and best practices.Concurrency is becoming increasingly important in modern software development, and designing data structures that multiple threads can safely and efficiently access is essential. In this course, you will start by understanding the basic concepts of concurrency and the challenges of designing concurrent data structures.Next, you will learn about the different types of concurrent data structures and how to select the right one for your use case. Finally, you will explore the various synchronization techniques and mechanisms in C++ to ensure thread safety, such as mutexes, condition variables, and atomics.You will also learn about the different memory models and how to design lock-free and wait-free data structures. You will study the principles of memory reclamation and garbage collection, which are critical for creating efficient lock-free data structures.Throughout the course, you will work on practical examples and hands-on exercises to reinforce your understanding of the material. In addition, you will design and implement concurrent data structures such as queues, stacks, hash tables, and trees using the latest C++ features, such as the Standard Template Library (STL), smart pointers, and lambda expressions.By the end of this course, you will have a solid understanding of designing and implementing efficient concurrent data structures in C++. As a result, you can confidently create high-performance software that scales well on multi-core systems and can handle a high degree of concurrency.Here are five reasons why learning concurrency using C++20 is essential:Standardized support for concurrency: C++20 has introduced new features and enhancements that support concurrent programming. The Standard Template Library (STL) now supports parallel algorithms, atomic operations, and memory models. This means that C++20 provides a standardized way to write concurrent programs, making it easier for developers to write correct and efficient code.High-performance: C++ is a high-performance language, and with the new concurrency features in C++20, it is possible to write concurrent programs that are both correct and fast. Using atomics, for example, allows for lock-free synchronization, which can improve performance by reducing the overhead of acquiring and releasing locks.Memory model improvements: C++20 introduces a new memory model that provides stronger guarantees for concurrent access to shared memory. This makes it easier to reason about the behavior of concurrent programs and helps prevent subtle bugs that can be hard to find and fix.Better type safety: C++20 introduces new features that improve type safety in concurrent programs. For example, the atomic_ref class provides safer access to shared variables without explicit synchronization.Practical applications: Concurrency is becoming increasingly important in modern software development as multi-core processors become more common. Learning how to write concurrent programs using C++20 can give you a competitive advantage in the job market and enable you to develop high-performance software that can handle a high degree of concurrency.

Overview

Section 1: Introduction

Lecture 1 Introduction

Lecture 2 C++ standard features overview C++98/11/14/17/20/23

Lecture 3 Amdahl's law in concurrent programs

Lecture 4 When to use concurrency or multithreading optimally

Section 2: Lock Free Design fundamentals

Lecture 5 Wait free concpets

Lecture 6 Lock Free concept

Lecture 7 Obstruction Free Concept

Lecture 8 Thinking in Transactions like ACID

Lecture 9 C++ Atomic semantics quick refresher

Lecture 10 Considerations while using C++ atomics

Section 3: Double Check Locking with modern C++

Lecture 11 The concept in a nutshell in a single threaded context

Lecture 12 Concurrent implementation using mutex and atomics using standard C++11

Lecture 13 Using once_flag in C++11

Lecture 14 The cleanest concurrent initalization solution

Lecture 15 Locks, atomics and concurrent design

Section 4: Singly Linked List using Modern C++

Lecture 16 Design Goals

Lecture 17 Class overview using Modern C++ features

Lecture 18 Constructor, Destructor and Find implementation code walkthrough

Lecture 19 push_front function code walkthrough

Lecture 20 pop_front function code walkthrough

Section 5: ABA problem, RCU, Hazard pointers. Concurrent Solutions using Modern C++

Lecture 21 ABA Problem explained

Lecture 22 Overview of possible solutions for ABA problem

Lecture 23 Overview of solutions for deletetion related problems

Lecture 24 Singly Linked List using the Reference class and other modern C++ features

Lecture 25 Implementation details for using the reference class

Lecture 26 Concurrency analysis of mutlithreading events in the class

Lecture 27 Read, Copy, and Update (RCU) design goals

Lecture 28 RCU example with concurrent dynamic array design using Modern C++

Lecture 29 Hazard pointer

Lecture 30 Thread pool design considerations when using C++20 or higher.

Lecture 31 Apply theory in concurrent applications

Section 6: Design considerations for building multithreading solutions using modern c++

Lecture 32 Important assumptions before going further

Lecture 33 Challenges in concurrent design using modern c++

Lecture 34 Design advice for dealing with multithreading in production

Lecture 35 Concurrent architecture overview

Section 7: Testing and debugging challengers with concurrent data structures

Lecture 36 Common types of bugs in multithreaded programs

Lecture 37 Bugs related to unwanted blocking

Lecture 38 Bugs releated to Race conditions

Lecture 39 Code review techniques for dealing with multithreading

Lecture 40 Challenges in testing multithreaded code

Lecture 41 Design for testability

Lecture 42 Testing Techniques

Section 8: Conclusion

Lecture 43 Libraries, Tool and closing remarks

Lecture 44 [Bonus Lecture]

Intermediate C++ programmers exploring concurrey in modern C++,Intermediate C++ programmers looking to grow in their roles from developer to Leads,Intermediate C++ programmers curious to understand practical implementation of modern c++ concurrency tools,C++ programmers aware of syntax but looking for opportunities to build personal projects using advanced language features.,Senior Software Engineers planning to become Tech Leads in near future,All C++ programmers who have been coding in C++ for 12 months or more.