Parallel and Concurrent Programming with C++ Part 1
1h 59mAdvanced2020-05-15
Authors

Barron Stone
Electrical Engineer

Olivia Chiu Stone
Programmer, Engineer
Course details
Parallel programming unlocks a program’s ability to execute multiple instructions simultaneously. It increases the overall processing throughput and is key to writing faster and more efficient applications. This training course introduces the basics of concurrent and parallel programming in C++, providing the foundational knowledge you need to write more efficient, performant code. Instructors Barron and Olivia Stone explain concepts like threading and mutual exclusion in a fun and informative way, relating them to everyday activities you perform in the kitchen. To cement the ideas, they demo them in action using C++. Each lesson is short and practical, driving home the theory with hands-on techniques.
Topics include:
Parallel computing architectures
Shared vs. distributed memory
Thread vs. process
Execution scheduling
The thread lifecycle in C++
Mutual exclusion
Locking in recursive and shared mutexes
Acquiring a lock on a mutex with a try lock
Resolving deadlock and livelock conditions
Topics include:
Parallel computing architectures
Shared vs. distributed memory
Thread vs. process
Execution scheduling
The thread lifecycle in C++
Mutual exclusion
Locking in recursive and shared mutexes
Acquiring a lock on a mutex with a try lock
Resolving deadlock and livelock conditions
Skills covered
C++Programming FoundationsProgramming LanguagesOpen SourceSoftware DevelopmentDeep Dive (X:Y)
Concepts
0. Introduction
- 01 - Learn parallel programming basics
- 02 - What you should know
- 03 - Installing Cygwin and Visual Studio Code
1. Parallel Computing Hardware
- 04 - Sequential versus parallel computing
- 05 - Parallel computing architectures
- 06 - Shared versus distributed memory
2. Threads and Processes
- 07 - Thread versus process
- 08 - Thread versus process - C++ demo
- 09 - Concurrent versus parallel execution
- 10 - Execution scheduling
- 11 - Execution scheduling - C++ demo
- 12 - Thread life cycle
- 13 - Thread life cycle - C++ demo
- 14 - Detached thread
- 15 - Detached thread - C++ demo
3. Mutual Exclusion
- 16 - Data race
- 17 - Data race - C++ demo
- 18 - Mutual exclusion
- 19 - Mutual exclusion - C++ demo
- 20 - Atomic objects - C++ demo
4. Locks
- 21 - Recursive mutex
- 22 - Recursive mutex - C++ demo
- 23 - Try lock
- 24 - Try lock - C++ demo
- 25 - Shared mutex
- 26 - Shared mutex - C++ demo
5. Liveness
- 27 - Deadlock
- 28 - Deadlock - C++ demo
- 29 - Abandoned lock
- 30 - Abandoned lock - C++ demo
- 31 - Starvation
- 32 - Starvation - C++ demo
- 33 - Livelock
- 34 - Livelock - C++ demo
Conclusion
- 35 - Next steps
Related courses
- Parallel and Concurrent Programming with C++ Part 2
- Complete Guide to Parallel and Concurrent Programming with C++
- Parallel and Concurrent Programming with Java 1
- Parallel and Concurrent Programming with Java 2
- Complete Guide to Parallel and Concurrent Programming with Java
- Python Parallel and Concurrent Programming Part 1
- Python Parallel and Concurrent Programming Part 2
- Complete Guide to Parallel and Concurrent Programming in Python