What you would learn in Master Class-Multithreading & Thread Synchronization - C/C++ course?
Mutual Exclusion Vs Atomocity
Thread Synchronization Techniques
Writing Thread Safe Codes
Thread standard problems - Reader-Writer Problem
Mutexes, Semaphores, Monitors
Signaling and Wait
Detecting and preventing locks
Debugging multithreaded Programs
C language is MUST
Linux Operating Systems
Zeal to learn and excel
Enthusiasm to write lots of Code
Welcome to the Course Series on Multi-Threading - The Master Class Course on Threads.
[ ** STILL ADDING CONTENT TO IT, LAST UPDATED 31 JAN 2020 ** ]
This course is for those who want to develop fundamental concepts on Multi-threading and related concepts. In this course, we shall be going to cover Multi-threading concepts based on Pthreads (POSIX threads) on the Linux platform.
Though We use the C language to demonstrate the concepts, but concepts holds good for any programming language. This course is equally valuable for C++ programmers. Other language programmers may also find this course useful as we explain Multithreading concepts close to the ground zero levels No Abstraction.
We shall discuss several concepts involved in multithreading and demonstrate each concept through a sample program. Several Important Concepts include but not limited to - Deadlocks, Mutual Exclusion, Atomicity, Thread Synchronization, Race Conditions, Thread forking, and many more.
In the Next Installment of this course, we shall extend our knowledge of Multi-threading to Advance Concepts which also include mini-projects on Multithreading and Thread Synchronization.
At each stage of this Course series, you shall be writing a lot of multi-threaded Codes. So be ready to Master the Multi-threading. Along the journey, we shall cover several interview-favorite topics and Questions to prepare you alongside for interviews.
Best of luck!
Table Of Contents:
= = = ======= = = =
1. Understanding Threads
Thread Creation & Termination
Race condition on Thread Creation
Passing Argument to Thread Function
Stack Memory Mgmt for Multi-threaded Programs
2. Understanding Concurrency and Parallelism
Singlularism Vs Concurrency Vs Parallelism
Concurrent Process Design - 2 Examples
Threads as Light Weighted Process
Overlapping and Non-Overlapping Work
3. Joinable and Detached Threads
Joinable Vs Detached Threads
How to Join a thread
Whom to Join?
Sample - Map-Reduce Program
4. Inter Thread Communication
Understanding Callbacks and Function Pointers
Best way to implement ITC
Implementing Notification Chains
A Publisher Subscriber Model
How to Subscribe/UnSubscribe
How to send Notification to Subscribers
5. Asynchronous Thread Cancellation
Asynchronous and Deferred Thread Cancellation
Problem with Async Thread Cancellation
Concept of Thread Cleanup Handlers
Prevent Resource Leaking
Data Structure Corruption - Invariants
Cancellation causing Deadlocks
6. Deferred Cancellation
Understanding Deferred Cancellation
7. Listener Threads - Responsibility Delegation
Why Listener threads?
Designing Listener threads
Code Changes and Demo
Cancellation of blocked Threads
8. Thread Synchronization
Mutex Locking - Code Locking
Mutex Locking - Data Locking
Mutex based APIs
Mutexes in Action
What are deadlocks and why do they happen?
Necessary conditions for Deadlock to happen
Mutex lock Ordering Causing Deadlocks
10. Condition Variables
CV Vs Mutex
Wait( ) & Signal( )
Producer-Consumer Thread Synchronization
Thread Vs Rescourse Specific CV
Broadcasting a CV
Implement Producer-Consumer Problem << Delivered Till here as on 31 Jan 2020
Listing Upcoming Topics ( Under Progress )
= = = = = = = = = = = = = = = = = = = = = =
Then We enter into Thread Synchronization Topics :
1. Thread Pools
2. Lock Size
3. Standard Problems - Reader/Writer Problem, Dining Philosopher problem etc
4. Implementing Master-Slave Relationship between threads
5. Implementing Thread Scheduler
6. Implementing Thread Monitors
7. Semaphore based Synchronization
8. Deadlock Detection and Prevention
9. Asynchronous Programming using Threads (Say Goodbye to Locking)
10. Implement Timers using Threads
11. How to fork a multi-threaded process
So you can see, some really amazing stuff is yet to come.
Depending on the content size, I may split the content into two parts - Course A & Course B. Don't worry, whoever enrolls in part A will be given free entry in Part-B.