oop-trainer.ch


Seminare


Multithreading


Standardprobleme und deren Lösungen in der Programmierung parallel ablaufender Threads


Kursinhalte:

In der modernen Softwareentwicklung auf Desktop- und Serversystemen sowie in Embedded Software ist die Nutzung der Möglichkeit der Programmierung parallel ablaufender Threads längst weit verbreitet. Für den Entwickler ist die Beherrschung der dafür notwendigen Techniken zur Pflicht geworden, denn es gibt häufig architektonische Vorentscheidungen, die die Anwendung konkurrierender Ablaufstränge notwendig machen und den Entwickler zwingen, sich mit der Technik und den daraus entstehenden Problemen zu beschäftigen.

Der Kurs gibt einen fundierten Einstieg in die Techniken, die für den erfolgreichen Einsatz paraleller Threads beherrscht werden müssen. Dazu werden praktische Übungen auf Betriebssystemen wie UNIX, Linux, Mac OS oder Windows durchgeführt. Dabei lernen die Teilnehmer die Standardprobleme in der Multithreadingprogrammierung und deren Lösung kennen. Für die Durchführung des Kurses wird auf Anschaulichkeit Wert gelegt. Es werden Probleme diskutiert und typische Fehlersituationen aufgezeigt. Alle Fehlersituationen werden in Beispielen von den Teilnehmern simuliert, Lösungsstrategien praktisch erarbeitet und erprobt.
Neben dem vorgegebenen Stoff gibt der Kurs genügend Raum zur Diskussion eigener Projektbeispiele und Problemsituationen.

Die Kursinhalte in Stichworten:

  • Gründe für die Parallelisierung von Abläufen
  • Historisches zu Prozessen und Threads
    • Hardware
    • Betriebssysteme
  • Prozesse und Threads
  • POSIX, Pthreads
  • Threads unter MS Windows®
  • Architekturen der Nebenläufigkeit
  • Threadzustände
  • Echtzeitaspekte
  • Schedulingmechanismen
    • Prioritätsbasiertes Scheduling
    • FIFO- oder Warteschlangen-Scheduling
    • Zeitscheibenverfahren
    • Round Robin Verfahren
    • Runtime Credit Verfahren
  • Datenzugriff aus mehreren Threads
  • Synchronisierung von Datenzugriffen
    • Condvars
    • Events
    • Critical Sections - Spin-Lock Verfahren
    • Mutexe
    • Semaphore
  • Typische Situationen des Datenaustauschs zwischen Threads
  • Typische Fehler
    • Aushungern (Starvation)
    • Deadlocks
    • Race Conditions
    • Prioritätsinversion
  • Lösungsansätze für die typischen Fehler
    • Back-Lock Strategie
    • Monitorkonzept
    • Priority-Boost
    • Finite Statusmaschine
  • Threadlokaler Speicher
  • Run Once Initialization
  • Diskussion von Nebenläufigkeitsmodellen
    • Pipeline
    • Workgroup Modell
    • Manager/Worker (Client/Server)
    • Fork on Idle
    • ...
  • Threading und Objektorientierung
  • Diskussion neuer Bibliotheken und Techniken
    • Open MP
    • Boost
    • Der neue C++ Standard
    • ...

Es kann ein beliebiger C oder C++ Compiler eingesetzt werden. Als Plattformen empfehlen sich Windows-, Mac OS-, UNIX- oder Linuxsysteme. Wichtig ist dabei, dass die Kursteilnehmer das eingesetzte System kennen. Idealerweise arbeitet man mit mehreren unterschiedlichen Systemen, um Ähnlichkeiten und Unterschiede in modernen Betriebssystemen demonstrieren zu können. Dabei können auch Beispiele in Java zur Ergänzung der Technologiepalette herangezogen werden.
Das Seminar kann an spezielle thematische Anforderungen angepasst werden und auf einen bestimmten, für Sie wichtigen Gesichtspunkt, ausgerichtet werden.

Anfragen telefonisch unter: +49 179 2292471