Part A - Multithreading & Thread Synchronization - Pthreads
What you'll learn
- MultiThreading Fundamentals
- Mutual Exclusion Vs Atomocity
- Thread Synchronization Techniques
- Writing Thread Safe Codes
- Mutexes, Semaphores
- Signaling and Wait
- Interview Questions
- 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.
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, concepts hold 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 are 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, including 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
Spurious Wake Ups
Thread Vs Resource Specific CV
Broadcasting a CV
Implement Producer-Consumer Problem
11. Dining Philosopher Problem
Data Structures Setup
Assignment Program Setup
Final Implementation (Step by Step )
Semaphores Vs Mutexes
How Semaphore work
Strict Alternation Problem
Strong and Weak Semaphores
Listing Upcoming Advanced Multi-Threading Topics for Sequel Course ( Under Progress )
= = = = = = = = = = = = = = = = = = = = = =
1. Pausing and Resuming Threads
2. Thread Pools
3. Standard Problems - Reader/Writer Problem
4. Implementing Thread Barriers
5. Implementing Thread Monitors
6. Solving Sync Problems using Monitors
7. Deadlock Detection and Prevention
8. Wait Queues
9. Implement Timers using Threads
10. How to fork a multi-threaded process
11. Process Synchronization using Named Semaphores
This course is amazing. I'm so glad the instructor decided to offer courses on Udemy. First, it's very rare to find courses on more advanced subject matter. As a software developer, I love learning but am often disappointed that Udemy largely has beginner-oriented material (understandably so). Then there's the CSEPracticals courses. I learned a LOT here. This is some valuable, real world stuff. It's incredibly useful to learn how multi-threading in C is actually applied in real world use cases and to implement these use cases on your own. The instruction was clear, the information valuable. The code samples are plentiful. The instructor is clearly very knowledgeable about networking and so the course examples tend to lean in that direction. I'm very impressed and had a LOT of fun with this course. I can't wait to check out the other ones by CSEPracticals.
I have just finished this course, and I cannot recommend it more. Its an excellent course on multi-threading and achieves exactly what it intends to from the start. Some features of this course 1) You write a lot of code, and you become more confident in using the pthread library ( along with some other things, I learned how important proper use of assert function can be). 2) Abishekh goes in depth on different synchronization method and shows you have to build them using fundamental tools like mutex and condition variables. This gives you a lot of confidence, and you can build your own in future in case your chosen OS or library does not have those built-in. This in my opinion is the biggest strength of the course. 3) The team of CSE Practicals is very responsive and you can expect to get a response on your queries within a very reasonable time-frame. Ongoing to the course sequel now. Ovais
Who this course is for:
- Engineering graduates & post-graduates
- Working professionals and Job Seekers
- Free lancers , System Engineers, Developers
I have been engaged with coding and software for a decade now. I am a Networking developer at MNC. My rich working experience is backed by graduation from IIT Bombay as an MTech specialist. I am restless for more in-depth knowledge, and always working out the ways to integrate what I know in practical ways. I am always happy to train and encourage people on Udemy – the next-gen education platform.
I will help you to strengthen the networking concepts and fundamentals in a very practical way. I also hones in System Software Development, Linux System Programming and Network Software Development. I love to create courses on unique non-standard topics, and projects. Check my catalogue, you will find couple of project based courses which you can add to your resume.
You’ll complete assignments and work on a project where you’ll use all the theory. I make sure you build a proper understanding and that you’ll get all the questions and doubts answered. Let me take the privilege to guide you and bring useful additions to your resume !
Hi, Myself Shivani Nigam, PhD in Marketing. I expertise in researching the consumer behavior in the context of purchasing the products online. I take the responsibility of marketing the online content (Udemy courses) on this platform.
I also ensure the courses are delivered with perfect Audio/Video Quality by technical Instructors, and ensures that students queries and doubts are addressed by technical instructors with priority.
Hi, I am Ekta, a facility Manager for Csepracticals. I am responsible for the maintenance and upkeep of an organization’s infrastructure, ensuring that they meet legal requirements and health and safety standards.
I ensure that the facility is operating as it should on a daily basis by completing daily inspections and conducting proactive and reactive maintenance.