Linux Multithread-/Multicore-Programming

Who should attend:

Software developers, software architects


Knowledge of the programming language C


3 days

Course Description:

This course shows how the processor performance of Linux systems can optimally be used, especially in modern multicore architectures. It has been developed for software developers having to develop new applications or having to optimise existing ones and is also suitable for Embedded Linux software development. The special focus of this course is the presentation of the Pthread-API of the NPTL library (Native Posix Threads Library). The training covers the range of functions of the thread library in detail and also shows problems and solutions as well as guide lines for a good multithread software design. Additionally the course also gives an introduction into the software development with OpenMP and thus provides an insight in an entirely different kind of software development for multithreading systems.

Course outline:

Introduction to multithreading

  • Functional principle
  • Threads vs. Processes
  • The Posix Standard and the Pthread API
  • The NPTL-Thread-Model
  • Scheduling concepts
  • Thread states


  • Thread creation
  • Passing parameters and return values
  • Thread attributes
  • Priorities and scheduling
    • Time sharing
    • Real time
  • Threads and Signals
  • Thread local Storage
  • Thread cancellation


  • Flag synchronisation
  • Race conditions
  • Mutexes
    • Recursive access
    • Deadlocks
    • Priority inversion
    • Ceiling priority
    • Fairness
  • Reader-/Writer-Locks
  • Semaphores
  • Condition variables
  • Barriers
  • Onetime initialisation

Multicore Programming

  • When is multicore useful?
  • Amdahl’s Law
  • Approaches for performance optimisations
  • False Sharing
  • Processor affinity
  • Spinlocks
  • Guide lines for a good application design


  • What is OpenMP?
  • Example: Multithread programming without (explicit) threads

We use cookies on our website. Some of them are essential for the operation of the site, while others help us to improve this site and the user experience (tracking cookies). You can decide for yourself whether you want to allow cookies or not. Please note that if you reject them, you may not be able to use all the functionalities of the site.