We may earn an affiliate commission when you visit our partners.
Course image
Kasun Liyanage

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. 

Read more

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++.

Enroll now

What's inside

Learning objectives

  • 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.

Syllabus

Thread management
Setting up the environment for the course
Introduction to parallel computing

In this quiz we are going to explore parallel programming in general

Read more

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Develops advanced C++ skills for writing multi-threaded and concurrent code, including memory models and race conditions
Examines modern C++ features, such as C++17/20 standards, for concurrency and parallelism
Taught by Kasun Liyanage, an expert in C++ concurrency
Provides hands-on practice with implementing thread-safe data structures and algorithms using both lock-based and lock-free approaches
Covers advanced topics such as C++20 concurrency features, CUDA programming, and thread pools

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

Modern c++ concurrency deep dive

According to learners, this course offers a highly comprehensive and in-depth exploration of Modern C++ Concurrency, including C++17 and C++20 features. Many found it to be an invaluable resource for advanced C++ developers seeking to master complex topics like the C++ memory model, lock-free data structures, and thread pool implementations. Students particularly praised the detailed theoretical explanations combined with practical coding examples. While its fast pace and advanced nature make it unsuitable for beginners, experienced programmers will find it highly beneficial for performance optimization. Some noted the challenging nature of certain sections and suggested more extensive hands-on coding exercises.
Instructor's expertise is evident, but some found clarity challenges.
"The instructor knows his stuff; his explanations of `std::atomic` were very clear."
"Sometimes the explanations could be clearer, especially for the more complex concepts, which made them difficult to follow."
"I found the instructor's accent was also sometimes difficult to understand, which made complex topics even harder for me."
Covers C++17/20 concurrency standards.
"The C++20 features like `jthread` and barriers were a great addition, making the course very current."
"I learned how to implement useful concurrent data structures and algorithms using latest C++ features, which was a huge plus."
"The course stays current with C++17/20 standards, which I found vital for modern development."
Offers valuable hands-on coding for concurrent structures.
"The detailed theoretical explanations combined with practical coding examples made complex concepts digestible for me."
"I found the material solid, especially the lock-free data structures and memory reclaim mechanisms, very useful."
"The thread pool implementation was a highlight; I found it very useful for real-world applications."
Provides a deep dive into complex C++ concurrency topics.
"Absolutely fantastic course for diving deep into C++ concurrency! The sections on the C++ memory model and lock-free data structures are incredibly detailed and practical."
"This course truly delivers on its promise of 'in-depth'. The theoretical explanations combined with practical implementations of concurrent data structures are top-notch."
"The C++ memory model section alone is worth the price. I found it essential for anyone serious about high-performance C++."
Some topics are complex and require focused effort.
"Some parts, particularly the lock-free section, were quite challenging and required rewatching for me to grasp fully."
"I found this course very hard to follow because it jumps into advanced topics too quickly without sufficient foundation."
"My only minor gripe is that sometimes the code examples could have more comments or be broken down into smaller, more digestible steps for clarity."
Best suited for intermediate to advanced C++ developers.
"I highly recommend this for experienced C++ devs looking to optimize performance."
"Good content, but quite fast-paced and assumes a lot of prior knowledge. As someone new to advanced C++, I struggled a bit."
"This course is definitely not for beginners; I realize now I needed prior concurrency experience."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Modern C++ Concurrency in Depth ( C++17/20) with these activities:
Review C++ basics
Brushing up on the basics of C++ will help you quickly recall the fundamentals necessary to succeed in this course.
Show steps
  • Review variables, data types, and operators.
  • Go over control flow statements (if-else, loops).
  • Practice writing simple C++ programs.
Follow C++ concurrency tutorials
Following tutorials will provide you with a structured approach to learning C++ concurrency concepts.
Browse courses on Multithreading
Show steps
  • Find reputable C++ concurrency tutorials online.
  • Follow the tutorials step-by-step, implementing the examples.
  • Experiment with different concurrency techniques.
Mentor junior C++ developers
Mentoring others will reinforce your understanding of C++ concurrency and allow you to share your knowledge with aspiring developers.
Browse courses on Knowledge Sharing
Show steps
  • Identify junior C++ developers who need guidance.
  • Create a structured mentoring plan.
  • Provide support and guidance on C++ concurrency concepts.
  • Review code, provide feedback, and suggest improvements.
Show all three activities

Career center

Learners who complete Modern C++ Concurrency in Depth ( C++17/20) will develop knowledge and skills that may be useful to these careers:
Computer Programmer
Computer Programmers translate software requirements into machine instructions using programming languages. They design, write, test, and maintain computer programs to meet user needs in a variety of areas, such as business, education, healthcare, and entertainment. This course helps build a foundation in advanced C++ concepts, including memory management and concurrency. These concepts are essential for developing high-performance software applications.
Software Engineer
Software Engineers design, develop, test, and maintain software systems. They use a variety of programming languages and tools to create software systems that are reliable, efficient, and meet user needs. This course helps build a foundation in advanced C++ concepts, including memory management and concurrency. These concepts are essential for developing high-performance software systems.
Software Developer
Software Developers write programs and applications for computers. They design, develop, test, and maintain software to meet user needs in a variety of areas, such as business, education, healthcare, and entertainment. This course helps build a foundation in advanced C++ concepts, including memory management and concurrency. These concepts are essential for developing high-performance software applications.
Mobile Application Developer
Mobile Application Developers design and develop mobile applications for smartphones and tablets. They use a variety of programming languages and tools to create mobile applications that are functional, visually appealing, and compatible with different mobile platforms. This course helps build a foundation in advanced C++ concepts, including memory management and concurrency. These concepts are essential for developing high-performance mobile applications.
Web Developer
Web Developers design and develop websites. They use a variety of programming languages and tools to create websites that are functional, visually appealing, and compatible with different devices. This course helps build a foundation in advanced C++ concepts, including memory management and concurrency. These concepts are essential for developing high-performance web applications.
Database Administrator
Database Administrators design, implement, and maintain databases. They use a variety of programming languages and tools to create databases that are reliable, efficient, and meet the needs of organizations. This course may be useful in developing the programming skills needed to work with databases.
Information Security Analyst
Information Security Analysts design, implement, and maintain security systems to protect computer networks and data from unauthorized access. They use a variety of programming languages and tools to create security systems that are reliable, efficient, and meet the needs of organizations. This course may be useful in developing the programming skills needed to work with security systems.
Cloud Architect
Cloud Architects design, implement, and maintain cloud computing systems. They use a variety of programming languages and tools to create cloud computing systems that are reliable, efficient, and meet the needs of organizations. This course may be useful in developing the programming skills needed to work with cloud computing systems.
Data Scientist
Data Scientists use scientific methods, processes, algorithms, and systems to extract knowledge and insights from data in various forms, both structured and unstructured. They develop and maintain analytical models and techniques to analyze data and provide insights for business decisions. This course may be useful in developing the programming skills needed to work with large datasets.
Machine Learning Engineer
Machine Learning Engineers design, develop, and maintain machine learning models and algorithms. They use a variety of programming languages and tools to create machine learning models that can learn from data and make predictions or decisions. This course may be useful in developing the programming skills needed to work with machine learning models.
Computer Systems Analyst
Computer Systems Analysts design, develop, and implement computer systems. They use a variety of programming languages and tools to create computer systems that meet the needs of organizations. This course may be useful in developing the programming skills needed to work with computer systems.
Network Administrator
Network Administrators design, implement, and maintain computer networks. They use a variety of programming languages and tools to create computer networks that are reliable, efficient, and meet the needs of organizations. This course may be useful in developing the programming skills needed to work with computer networks.
Systems Administrator
Systems Administrators install, configure, and maintain computer systems. They use a variety of programming languages and tools to create computer systems that are reliable, efficient, and meet the needs of organizations. This course may be useful in developing the programming skills needed to work with computer systems.
Technical Writer
Technical Writers create and maintain technical documentation for software and hardware products. They use a variety of programming languages and tools to create technical documentation that is clear, concise, and accurate. This course may be useful in developing the writing skills needed to work with technical documentation.
IT Manager
IT Managers plan, direct, and coordinate the activities of computer and information systems operations within an organization. They use a variety of programming languages and tools to manage computer and information systems. This course may be useful in developing the management skills needed to work with computer and information systems.

Reading list

We've selected nine books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Modern C++ Concurrency in Depth ( C++17/20).
Provides a comprehensive overview of C++ concurrency, covering topics such as threads, synchronization, and memory management. It valuable resource for anyone looking to learn more about C++ concurrency.
Provides practical advice on how to write effective modern C++ code. It covers a wide range of topics, including resource management, error handling, and performance optimization.
Provides a comprehensive overview of C++ templates. It covers topics such as template syntax, template metaprogramming, and template libraries.
Is the definitive reference on the C++ programming language. It covers all aspects of the language, from basic syntax to advanced topics such as templates and concurrency.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser