Udemy
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
Development
Web Development Data Science Mobile Development Programming Languages Game Development Database Design & Development Software Testing Software Engineering Development Tools No-Code Development
Business
Entrepreneurship Communications Management Sales Business Strategy Operations Project Management Business Law Business Analytics & Intelligence Human Resources Industry E-Commerce Media Real Estate Other Business
Finance & Accounting
Accounting & Bookkeeping Compliance Cryptocurrency & Blockchain Economics Finance Finance Cert & Exam Prep Financial Modeling & Analysis Investing & Trading Money Management Tools Taxes Other Finance & Accounting
IT & Software
IT Certification Network & Security Hardware Operating Systems Other IT & Software
Office Productivity
Microsoft Apple Google SAP Oracle Other Office Productivity
Personal Development
Personal Transformation Personal Productivity Leadership Career Development Parenting & Relationships Happiness Esoteric Practices Religion & Spirituality Personal Brand Building Creativity Influence Self Esteem & Confidence Stress Management Memory & Study Skills Motivation Other Personal Development
Design
Web Design Graphic Design & Illustration Design Tools User Experience Design Game Design Design Thinking 3D & Animation Fashion Design Architectural Design Interior Design Other Design
Marketing
Digital Marketing Search Engine Optimization Social Media Marketing Branding Marketing Fundamentals Marketing Analytics & Automation Public Relations Advertising Video & Mobile Marketing Content Marketing Growth Hacking Affiliate Marketing Product Marketing Other Marketing
Lifestyle
Arts & Crafts Beauty & Makeup Esoteric Practices Food & Beverage Gaming Home Improvement Pet Care & Training Travel Other Lifestyle
Photography & Video
Digital Photography Photography Portrait Photography Photography Tools Commercial Photography Video Design Other Photography & Video
Health & Fitness
Fitness General Health Sports Nutrition Yoga Mental Health Dieting Self Defense Safety & First Aid Dance Meditation Other Health & Fitness
Music
Instruments Music Production Music Fundamentals Vocal Music Techniques Music Software Other Music
Teaching & Academics
Engineering Humanities Math Science Online Education Social Science Language Teacher Training Test Prep Other Teaching & Academics
AWS Certification Microsoft Certification AWS Certified Solutions Architect - Associate AWS Certified Cloud Practitioner CompTIA A+ Cisco CCNA Amazon AWS CompTIA Security+ AWS Certified Developer - Associate
Graphic Design Photoshop Adobe Illustrator Drawing Digital Painting InDesign Character Design Canva Figure Drawing
Life Coach Training Neuro-Linguistic Programming Mindfulness Personal Development Meditation Personal Transformation Life Purpose Coaching Neuroscience
Web Development JavaScript React CSS Angular PHP WordPress Node.Js Python
Google Flutter Android Development iOS Development Swift React Native Dart Programming Language Mobile Development Kotlin SwiftUI
Digital Marketing Google Ads (Adwords) Social Media Marketing Google Ads (AdWords) Certification Marketing Strategy Internet Marketing YouTube Marketing Email Marketing Retargeting
SQL Microsoft Power BI Tableau Business Analysis Business Intelligence MySQL Data Analysis Data Modeling Data Science
Business Fundamentals Entrepreneurship Fundamentals Business Strategy Online Business Business Plan Startup Freelancing Blogging Home Business
Unity Game Development Fundamentals Unreal Engine C# 3D Game Development C++ 2D Game Development Unreal Engine Blueprints Blender
30-Day Money-Back Guarantee

This course includes:

  • 9.5 hours on-demand video
  • Full lifetime access
  • Access on mobile and TV
IT & Software Other IT & Software C++

Modern C++ Concurrency in Depth ( C++17/20)

modern c++ concurrency features including memory model, lock free data structure, thread pools, coroutines.
Rating: 4.3 out of 54.3 (782 ratings)
5,114 students
Created by Kasun Liyanage
Last updated 11/2020
English
English
30-Day Money-Back Guarantee

What you'll learn

  • Learn Concurrent programming in C++ including feature in C++17/20 standards.
  • You will learn how to implement useful concurrent data structures and algorithms using latest C++ features.
Curated for the Udemy for Business collection

Requirements

  • Basic of c++ programming , some knowledge about data structures and algorithms would be helpful

Description

C++ programming language can be categorized under many topics. Some say its a general purpose programming language, some say its a object oriented version of C. But I liked to categorized it under system programming language. One characteristic of any system programming language including C++ is that language should be able to execute faster compare to other languages like java etc. 

C++ paradigm took sharp turn with the introduction of C++11 standards. The most notable difference with previous version is the introduction of new memory model. Memory model is the key part of any language, and the performance of all the functionalities depends on that language memory model. With new c++ memory model, we can exploit tremendous power of  modern multi core processors. 

Programming a proper C++ code with better memory reclaim mechanism is tough task. But if we want to code thread safe code which can harvest underline processors true power is much more difficult task. In this course we will have in depth discussion on  C++ concurrency features including memory model. We will implements thread safe data structures and algorithms, both lock based manner and lock free manner. Proper lock free implementations of data structures and algorithms will provide unprecedented performance output. Let me listed down key aspects we cover in this course below.

1.Basics of C++ concurrency(threads, mutex, package_task, future ,async, promise)

2.Lock based thread safe implementation of data structures and algorithms.

3.C++ memory model.

4.Lock free implementation of data structures and algorithms.

5.C++20 concurrency features.

5. Proper memory reclaim mechanism for lock free data structures.

6. Design aspects of concurrent code.

7. In depth discussion on thread pools.

8. Bonus section on CUDA programming with C and C++.

Who this course is for:

  • Anyone who wants to widen you skills with c++ programming.

Featured review

Giovanni Giacomo
Giovanni Giacomo
68 courses
16 reviews
Rating: 5.0 out of 55 months ago
The course does an extensive study of several multithreading mechanisms in C++ and really gives you an insight into the various complex techniques. Although multithreading is a complicated topic, especially in C++, I feel like the course has helped me to start the long journey of better understanding it.

Course content

9 sections • 98 lectures • 9h 38m total length

  • Preview08:18
  • Preview10:30
  • Quiz : Parallel programming in general
    01:04
  • Preview05:37
  • Programming exercise 1 : Launching the threads
    00:55
  • Joinability of threads
    04:17
  • Join and detach functions
    04:11
  • How to handle join, in exception scenarios
    05:30
  • Programming exercise 2 : Trivial sale a ship model
    02:03
  • How to pass parameters to a thread
    04:07
  • Problematic situations may arise when passing parameters to a thread
    03:19
  • Transferring ownership of a thread
    03:24
  • Some useful operations on thread
    05:10
  • Programming excersice 3 : Sail a ship with work queues
    01:59
  • Parallel accumulate - algorithm explanation
    03:39
  • Parallel accumulate algorithm implementation
    08:30
  • Thread local storage
    03:12
  • Debugging a application in Visual studio
    12:27
  • Thread management
    4 questions

  • Preview02:35
  • Preview03:20
  • mutexes
    05:50
  • Things to remember when using mutexes
    02:46
  • Thread safe stack implementation : introduction to stack
    04:46
  • Thread safe stack implementation : implementation
    06:26
  • Thread safe stack implementation : race condition inherit from the interface
    05:33
  • Dead locks
    04:36
  • unique locks
    02:41
  • Mutex and locks
    5 questions

  • introduction to condition variables
    04:36
  • Details about condition variables
    04:14
  • Thread safe queue implementation : introduction to queue data structure
    04:58
  • Thread safe queue implementation : implementation
    05:11
  • introduction to futures and async tasks
    04:28
  • async tasks detailed discussion
    04:55
  • Parallel accumulate algorithm implementation with async task
    03:55
  • Introduction to package_task
    03:42
  • Communication between threads using std::promises
    03:14
  • Retrieving exception using std::futures
    03:00
  • std::shared_futures
    03:59

  • introduction to lock based thread safe data structures and algorithms
    04:00
  • queue data structure implementation using linked list data structure
    06:19
  • thread safe queue implementation
    02:43
  • Parallel STL introduction
    10:58
  • parallel quick sort algorithm implementation
    11:51
  • parallel for each implementation
    07:57
  • parallel find algorithm implementation with package task
    06:18
  • parallel find algorithm implementation with async
    03:05
  • Partial sum algorithm introduction
    07:22
  • Partial sum algorithm parallel implementation
    11:03
  • Introduction to Matrix
    11:22
  • Parallel Matrix multiplication
    04:06
  • Parallel matrix transpose
    06:03
  • Factors affecting the performance of concurrent code
    10:46

  • Jthread : Introduction
    07:12
  • Jthread : Our own version implementation
    05:09
  • C++ coroutines : Introduction
    08:02
  • C++ coroutines : resume functions
    06:46
  • C++ coroutines : Generators
    05:27
  • C++ Barriers
    05:18

  • Introduction to atomic operations
    03:16
  • Functionality of std::atomic_flag
    03:56
  • Functionality of std::atomic_bool
    05:48
  • Explanation of compare_exchange functions
    04:42
  • atomic pointers
    06:24
  • General discussion on atomic types
    02:08
  • Important relationships related to atomic operations between threads
    03:37
  • Introduction to memory ordering options
    02:22
  • Discussion on memory_order_seq_cst
    05:34
  • Introduction to instruction reordering
    04:05
  • Discussion on memory_order_relaxed
    04:31
  • Discussion on memory_order_acquire and memory_order_release
    04:41
  • Important aspects of memory_order_acquire and memory_order_release
    02:08
  • Concept of transitive synchronization
    02:38
  • Discussion on memory_order_consume
    02:51
  • Concept of release sequence
    05:27
  • Implementation of spin lock mutex
    04:25

  • Introduction and some terminology
    02:06
  • Stack recap
    07:18
  • Simple lock free thread safe stack
    08:25
  • Stack memory reclaim mechanism using thread counting
    14:25
  • Stack memory reclaim mechanism using hazard pointers
    13:00
  • Stack memory reclaim mechanism using reference counting
    12:48

  • Simple thread pool
    08:49
  • Thread pool which allowed to wait on submitted tasks
    06:19
  • Thread pool with waiting tasks
    10:50
  • Minimizing contention on work queue
    05:28
  • Thread pool with work stealing
    08:29

  • Setting up the environment for CUDA
    06:10
  • Elements of CUDA program
    16:48
  • Organization of threads in CUDA program 1
    08:38
  • Organization of threads in CUDA program 2
    06:13
  • Unique index calculation for threads in a grid
    09:19
  • Unique index calculation for threads in a 2D grid
    05:52
  • Unique index calculation for threads in a 2D grid 2
    05:09
  • Timing a CUDA program
    08:16
  • CUDA memory transfer
    11:12
  • Sum array example
    09:12
  • Error handling in a CUDA program
    04:31
  • CUDA device properties
    05:30

Instructor

Kasun Liyanage
Software engineer & founder of intellect, co founder at cpphive
Kasun Liyanage
  • 4.2 Instructor Rating
  • 1,556 Reviews
  • 12,554 Students
  • 3 Courses

Software engineer with years of experience in industry with c++ and java programming language. And entrepreneur and founder of intellect. creator of GPU MLIB library which provides GPU optimized parallel implementation of machine learning algorithms. My current project include fashion design framework which allows user to get the live fit on room experience. I am graduate on electrical and information engineering and i currently reading for master in artificial intelligence. 

  • Udemy for Business
  • Teach on Udemy
  • Get the app
  • About us
  • Contact us
  • Careers
  • Blog
  • Help and Support
  • Affiliate
  • Terms
  • Privacy policy
  • Cookie settings
  • Sitemap
  • Featured courses
Udemy
© 2021 Udemy, Inc.