Class Central is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

Udemy

Part A - Multithreading & Thread Synchronization - Pthreads

via Udemy

Overview

Linux POSIX Threads ( Pthreads ), thread Synchronization, Operating System Concepts, C/C++ programming with Projects

What you'll learn:
  • MultiThreading Fundamentals
  • Concurrency
  • Mutual Exclusion Vs Atomocity
  • Thread Synchronization Techniques
  • Writing Thread Safe Codes
  • Mutexes, Semaphores
  • Signaling and Wait
  • Interview Questions

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 Threads

  • Thread Creation & Termination

  • Racecondition on ThreadCreation

  • Passing Argument to Thread Function

  • Stack Memory Mgmt for Multi-threaded Programs

  • Thread Scheduling

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

  • ThreadCancellation

  • Asynchronous and Deferred Thread Cancellation

  • Problem with Async ThreadCancellation

    • ResourceLeaking

    • Invariants

    • Deadlocks

  • Concept of Thread Cleanup Handlers

    • Prevent Resource Leaking

    • Data Structure Corruption - Invariants

    • Cancellation causing Deadlocks

6. DeferredCancellation

  • Understanding Deferred Cancellation

  • Implementation

7. Listener Threads - Responsibility Delegation

  • Why Listener threads?

  • Designing Listener threads

  • Code Changes and Demo

  • Cancellation of blocked Threads

8. ThreadSynchronization

  • Critical Section

  • MutexRules

  • Mutex Locking

    • Mutex Locking - Code Locking

    • Mutex Locking - Data Locking

  • Mutex based APIs

  • Mutexes in Action

9. Deadlocks

  • What are deadlocks and why do they happen?

  • Necessary conditions for Deadlock to happen

  • Mutex lock Ordering Causing Deadlocks

10. Condition Variables

  • Understanding CV

  • CVVs Mutex

  • Wait( ) & Signal( )

  • Producer-ConsumerThreadSynchronization

  • Spurious Wake Ups

  • Thread Vs ResourceSpecific CV

  • Broadcasting a CV

  • Implement Producer-ConsumerProblem

11. Dining PhilosopherProblem

  • Problem Description

  • Data Structures Setup

  • AssignmentProgram Setup

  • Flowchart/Algorithm Discussion

  • Final Implementation (Step by Step )

12. Semaphores

  • Introduction

  • Semaphores Vs Mutexes

  • How Semaphorework

  • Strict Alternation Problem

  • SemaphoreImplementation

  • Semaphore Types

  • 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


Happy Learning.


Featured Review

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

Taught by

Abhishek CSEPracticals, Shiwani Nigam and Ekta Ekta

Reviews

4.6 rating at Udemy based on 655 ratings

Start your review of Part A - Multithreading & Thread Synchronization - Pthreads

Never Stop Learning.

Get personalized course recommendations, track subjects and courses with reminders, and more.

Someone learning on their laptop while sitting on the floor.