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 (POSIXthreads) on the Linux platform. Though We use theC 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, ThreadSynchronization, 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 ThreadSynchronization. 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 ThreadsThread Creation & TerminationRacecondition on ThreadCreationPassing Argument to Thread FunctionStack Memory Mgmt for Multi-threaded ProgramsThread Scheduling2. Understanding Concurrency and ParallelismSinglularism Vs Concurrency Vs ParallelismConcurrent Process Design - 2 ExamplesThreads as Light Weighted ProcessOverlapping and Non-Overlapping Work3. Joinable and Detached ThreadsJoinable Vs Detached ThreadsHow to Join a threadWhom to Join?Sample - Map-Reduce Program4. Inter Thread CommunicationUnderstanding Callbacks and Function PointersBest way to implement ITCImplementing Notification ChainsA Publisher Subscriber ModelHow to Subscribe/UnSubscribeHow to send Notification to Subscribers 5. Asynchronous Thread CancellationThreadCancellationAsynchronous and Deferred Thread CancellationProblem with Async ThreadCancellationResourceLeakingInvariantsDeadlocksConcept of Thread Cleanup HandlersPrevent Resource Leaking Data Structure Corruption - InvariantsCancellation causing Deadlocks6. DeferredCancellationUnderstanding Deferred CancellationImplementation7. Listener Threads - Responsibility DelegationWhy Listener threads?Designing Listener threadsCode Changes and Demo Cancellation of blocked Threads8. ThreadSynchronizationCritical SectionMutexRulesMutex LockingMutex Locking - Code LockingMutex Locking - Data LockingMutex based APIsMutexes in Action9. DeadlocksWhat are deadlocks and why do they happen?Necessary conditions for Deadlock to happenMutex lock Ordering Causing Deadlocks 10. Condition VariablesUnderstanding CVCVVs MutexWait( ) & Signal( )Producer-ConsumerThreadSynchronizationSpurious Wake UpsThread Vs ResourceSpecific CVBroadcasting a CV Implement Producer-ConsumerProblem 11. Dining PhilosopherProblemProblem DescriptionData Structures Setup AssignmentProgram SetupFlowchart/Algorithm DiscussionFinal Implementation (Step by Step )12. SemaphoresIntroductionSemaphores Vs Mutexes How SemaphoreworkStrict Alternation ProblemSemaphoreImplementationSemaphore TypesStrong and Weak SemaphoresListing Upcoming Advanced Multi-Threading Topics for Sequel Course ( Under Progress )= = = = = = = = = = = = = = = = = = = = = = 1. Pausing and Resuming Threads 2. Thread Pools3. Standard Problems - Reader/Writer Problem4. Implementing Thread Barriers5. Implementing Thread Monitors6. Solving Sync Problems using Monitors7. Deadlock Detection and Prevention8. Wait Queues9. Implement Timers using Threads10. How to fork a multi-threaded process11. Process Synchronization using Named Semaphores Happy Learning. Featured ReviewThis 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