This course provides a comprehensive introduction to concurrent programming concepts. It begins with an exploration of threads and parallel execution, focusing on how tasks can run simultaneously to enhance performance. The course then delves into critical aspects of shared data management and task synchronization, ensuring that multiple threads can operate without conflict. Students will learn about essential tools such as mutexes, locks, and condition variables, which are crucial for managing access to shared resources safely. Finally, participants will apply their knowledge in a project that integrates all learned concepts, fostering practical experience in designing and implementing concurrent systems.
Overview
Syllabus
- Threads and Parallel Execution
- Learn how to create, manage, and synchronize threads in C++ to unlock parallel execution, avoid race conditions, and ensure safe resource management using RAII and synchronization primitives.
- Threads: Sharing Data and Task Synchronization
- Master thread communication and synchronization using promises, futures, std::async, atomics, and lock-free programming for scalable, efficient concurrent applications.
- Mutexes, Locks, and Condition Variables
- Master advanced thread synchronization with mutexes, locks, and condition variables to build correct, efficient, and deadlock-free concurrent systems using modern C++ techniques.
- Program a Concurrent Traffic Simulation
- In this project, students will create a multithreaded traffic simulation where vehicles navigate intersections safely by using mutexes and synchronization to prevent collisions.
Taught by
Andrew Sanford