Skip to main content

Linux Multithread/Multicore Programming

Who should attend?

Software developers, software architects.

Prerequisites

Knowledge of the programming language C.

Duration

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 to the software development with OpenMP and thus gives an insight into 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

Threads

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

Synchronisation

  • 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

OpenMP

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

Practical Exercises

Put what you have learned into practice immediately.

The course content is not quite what you are looking for?


What customers say:

"Well-structured from a teaching perspective, and executed with absolute precision!"
"Excellent course instruction!"
"Pleasantly calm, knowledgeable, and open to questions."
"I really liked the explanation of the background."
"With 'Design Patterns for Embedded Systems,' Mr. Nieratschker has developed a highly informative, interactive, and engaging training course. Thanks to the puzzle questions that build on one another, the course feels like a mental scavenger hunt: the Da Vinci Code for programmers."
"I've never taken a course that was so perfectly structured!!! SKT++."
"Clear, visual explanations and a lot of patience when it comes to practical applications."
"A must-read for every object-oriented programmer!"
"A very good approach to deriving the patterns."
"All participants were 'brought up to speed,' since their levels of knowledge varied greatly."
"It really helped me make progress."
"Very good, practical examples."
"The instructor knows how to engage the students."
"Complex topics explained in a way that's super easy to understand."
"Knowledge of the instructor far above the trained theme!"
"The thing I liked most was the instructor's teaching skills!"
"The things I liked most were the teacher's clarity both in presentation and spoken English."
"Examples from real world, not like e.g. wikipedia."
"We were 'forced' to think ... Our attention was up all the time, which was great."
"What I liked in particular was the deep knowledge of the instructor and the sense of humor."
"What I liked in particular was the way we discovered patterns."

SKT Nieratschker · Karl Nieratschker · Joseph-Maria-Lutz-Str. 7 · D-85293 Reichertshausen · Tel. +49 (0) 8441 490210 · office@skt-nieratschker.com