Udemy
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
Turn what you know into an opportunity and reach millions around the world.
Learn More
Your cart is empty.
Keep shopping
POSIX Multithreading and Futex Programming in C From Scratch
Rating: 4.1 out of 5(3 ratings)
171 students

POSIX Multithreading and Futex Programming in C From Scratch

A practical guide to POSIX multithreading and futex programming — from beginner concepts to kernel-level tuning.
Created byMohamed Ayman
Last updated 4/2026
English

What you'll learn

  • Understand the Fundamentals of Multithreading Programming: Grasp the core concepts of threads, processes, concurrency, and parallelism in modern computing.
  • Master POSIX Threads (pthreads) in C: Learn how to create, manage, and synchronize threads using POSIX API functions.
  • Solve Real-World Problems Using Threads: Apply multithreading techniques to solve real-world challenges such as task parallelism
  • Avoid Common Pitfalls in Concurrent Programming: Identify and fix issues like race conditions, deadlocks, data corruption, and thread safety.

Course content

6 sections43 lectures3h 22m total length
  • 1.1 What is the Difference between Process & Thread3:48

    Explore how a process owns memory and resources, while threads share that memory but have their own stacks, and learn how the OS uses PCB and TCB to manage them.

  • A video explaining the graphics section of video 1.1 (Not Technical)0:49
  • 1.2 Why we use Multi-Threading Programming2:28
  • A video explaining the graphics section of video 1.2 (Not Technical)0:38
  • 1.3 Why Does Each Thread Have Its Own Stack4:33
  • A video explaining the graphics section of video 1.3 (Not Technical)0:53
  • 1.4 What is The Race Condition5:14
  • A video explaining the graphics section of video 1.4 (Not Technical)0:54
  • 1.5 Why we donot use multiple Processes instead of multithreaded6:17
  • A video explaining the graphics section of video 1.5 (Not Technical)1:10
  • Revision 1

Requirements

  • Basic knowledge of the C programming language: Learners should be comfortable with functions, pointers, and basic memory management in C.
  • Familiarity with the Linux command line: Knowing how to compile and run C programs in a Linux environment (using gcc and make) will be helpful.
  • A Linux-based system or a Linux virtual machine: All examples and labs are designed for Linux, so having access to a Linux terminal is essential.
  • Willingness to learn and explore concurrency concepts: No prior experience with multithreading is required — we’ll build from the ground up.

Description

In today’s computing world, concurrency is no longer optional — it’s essential. Modern applications must be fast, responsive, and capable of handling multiple tasks at once. This course is designed to give you a deep, practical understanding of multithreading programming in C using POSIX threads (pthreads) and futex, the powerful Linux system call for user-space synchronization.

Whether you're a systems programmer, embedded developer, Linux enthusiast, or computer science student, this course will walk you through every essential concept you need — starting from the basics and building up to low-level, high-performance techniques used in real-world software.

You'll begin by exploring the difference between processes and threads, understand why multithreading is more efficient, and learn how to create, manage, and terminate threads safely. From there, we’ll dive into synchronization tools like mutexes, condition variables, spinlocks, barriers, and advanced topics such as deadlocks, thread-local storage, reentrant functions, and thread safety.

In the second half of the course, you’ll learn how to use futex (Fast Userspace Mutex) — a Linux kernel mechanism for fast, scalable thread synchronization. We’ll explore futex APIs, fast vs. slow paths, kernel-level optimizations, and how futex is used under the hood by libraries like glibc and pthreads.

You’ll also analyze memory layout, thread stacks, how signals behave in multithreaded environments, and the difference between user and kernel space when working with threads.

By the end of this course, you’ll be able to write robust, thread-safe, and high-performance multithreaded applications in C — with a deep understanding of what’s happening behind the scenes at the kernel level.

Who this course is for:

  • C programmers who want to master multithreading.
  • Beginner to intermediate Linux developers.
  • Computer science and engineering students.
  • Anyone preparing for systems programming, embedded systems, or software engineering interviews.