Zum Hauptinhalt springen

Multithread-/Multicore-Programmierung

Zielgruppe

Software-Entwickler, Software-Architekten, Projektleiter

Vorkenntnisse

Kenntnis der Programmiersprache C. Da auch viele C++-Beispiele gezeigt werden, sind C++-Kenntnisse hilfreich, aber nicht Voraussetzung. Somit eignet sich dieser Kurs auch für Teilnehmer, die ausschließlich mit C programmieren.

Dauer

3 Tage (mit praktischen Übungen)

Kursziel

Dieses Training zeigt, wie die Eigenschaften von Multitask-/Multithread-Systemen eingesetzt werden können bzw. welche Probleme gelöst werden müssen, um die Prozessorleistung, insbesondere bei modernen Multicore-Systemen, bestmöglich nutzen zu können. Es richtet sich an Entwickler, die existierende Applikationen optimieren, oder neue Applikationen entwerfen und implementieren müssen. Die Themen werden allgemeingültig behandelt, so dass das erworbene Wissen prinzipiell auf jede Multithreading- oder Multitasking-Plattform anwendbar ist. Gleichzeitig werden die Lehrinhalte durch eine Fülle von C- und C++-Code-Beispielen konkretisiert. Dabei werden sowohl plattformspezifische Lösungen, basierend auf Windows, Linux und RTEMS, als auch plattformunabhängige Lösungen auf Basis der C++-Multithread-Bibliothek vorgestellt, die seit C++11 zur Verfügung steht.

Inhalt

Multithread-/Multicore Grundlagen

  • Konzept Task/Thread (allg. Thread)
  • Thread vs. Prozess
  • Zuordnung von Code und Daten
  • Scheduler und Thread-Zustandsmodell
  • Allgemeine Schedulingmodelle
  • Grunsätzliche Schedulingmechanismen
  • Singlecore-/Multicore-Multithreading

Thread-Programmierung

  • Threads und Funktionen
  • Threads und Objekte
  • Erzeugen und Starten von Threads
  • Der Stack eines Threads
  • Threadpriorität
  • Sonstige Konfigurationsparameter
  • Parameterübergabe
  • Thread-Beendigung
  • Threadlokaler Speicher (TLS)
  • Thread-Unterbrechung (Signale, Asynchrone Service Routinen)
  • Thread-Terminierung (Thread-Cancellation)

Synchronisation

  • Synchronisation mit Flag
  • Volatile
  • Speichermodell
  • Speicherbarrieren
  • Polling
  • Ereignissynchronisation (Events)
  • Zugriffssynchronisation (Mutexe)
  • Atomare Operationen
  • Typische Probleme und Lösungsansätze
  • Deadlocks und Livelocks
  • Mutex-Implementierungsdetails mit Laufzeitauswirkungen
  • Zugriff auf Ressourcen mit mehreren Einheiten (Semaphore)
  • Ressource-Zugriff mit Ereignisauslösung (Condition Variable)
  • Synchronisation von Threads mit Interrupt-Service-Routinen

Multicore-Programmierung

  • Wann lohnt sich der Einsatz von Multicore?
  • Laufzeitmessungen klassischer Lösungen für ein Synchronisationsproblem
  • Lösung mithilfe von Task Variablen
  • False Sharing
  • Prozessor-/Thread-Affinität
  • Spinlocks
  • Portierung von Singlecore-Applikationen auf Multicore-Systeme
  • Wichtige Kriterien für ein gutes Multithread-Design

Praktische Übungen

Setzten Sie das Gelernte direkt in die Praxis um.

Der Kursinhalt entspricht nicht ganz dem, was Sie suchen?


Das sagen Kunden:

"Didaktisch gut aufbereitet, absolut sicher in der Ausführung!"
"Hervorragende Kursleitung!"
"Angenehm ruhig, kompetent, offen für Fragen."
"Sehr gut fand ich die Erklärung der Hintergründe."
"Mit 'Design Patterns für Embedded Systeme' hat Herr Nieratschker ein sehr lehrreiches, interaktives und spannendes Training entwickelt. Durch die aufeinander aufbauenden Rätselfragen fühlt sich der Kurs an, wie eine gedankliche Schnitzeljagd: der Da Vinci Code für Programmierer."
"Noch nie einen so perfekt strukturierten Kurs besucht!!! SKT++."
"Gute bildliche Erklärungen, viel Geduld bei praktischen Anwendungen."
"Ein Muss für jeden objektorientierten Programmierer!"
"Sehr guter Ansatz zum Herleiten der Patterns."
"Alle Teilnehmer wurden 'abgeholt', da der Wissensstand sehr unterschiedlich ist."
"Hat mich richtig vorwärts gebracht."
"Sehr gute, praxisnahe Beispiele."
"Der Dozent beherrscht es, die Kursteilnehmer mitzunehmen."
"Komplexe Themen super verständlich hergeleitet."
"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."
"Didaktisch gut aufbereitet, absolut sicher in der Ausführung!"
"Hervorragende Kursleitung!"
"Angenehm ruhig, kompetent, offen für Fragen."
"Sehr gut fand ich die Erklärung der Hintergründe."
"Mit 'Design Patterns für Embedded Systeme' hat Herr Nieratschker ein sehr lehrreiches, interaktives und spannendes Training entwickelt. Durch die aufeinander aufbauenden Rätselfragen fühlt sich der Kurs an, wie eine gedankliche Schnitzeljagd: der Da Vinci Code für Programmierer."
"Noch nie einen so perfekt strukturierten Kurs besucht!!! SKT++."
"Gute bildliche Erklärungen, viel Geduld bei praktischen Anwendungen."
"Ein Muss für jeden objektorientierten Programmierer!"
"Sehr guter Ansatz zum Herleiten der Patterns."
"Alle Teilnehmer wurden 'abgeholt', da der Wissensstand sehr unterschiedlich ist."
"Hat mich richtig vorwärts gebracht."
"Sehr gute, praxisnahe Beispiele."
"Der Dozent beherrscht es, die Kursteilnehmer mitzunehmen."
"Komplexe Themen super verständlich hergeleitet."
"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