Kontakt aufnehmen
 Dauer 28 Stunden

Schulungsübersicht

Herausforderungen und Probleme bei der Nebenläufigkeit

  • Hardwarebedingte Beschränkungen von Plattformen - Hardware-Threads, Pipes, Cache-Kohärenz
  • Grundlegende Konzepte der Multithreading-Programmierung (Korrektheit多线程代码, Liveness, Starvation, Deadlock, Race Condition, Atomizität, Konsistenzmodelle, Flynns Taxonomie)
  • In C++ verfügbare Mechanismen zur Implementierung von Multithreading und Multiprocessing
  • Standardbibliotheks-Implementierungen – von C++14 bis zur Gegenwart (C++2a)
  • Verfügbare Boost-Bibliothek – Unterschiede zur Standardbibliothek

Prozesse und Threads

  • Multiprocessing versus Multithreading-Anwendungen
  • Betriebssystem und Threads (kurzer Überblick verfügbarer Implementierungen)
  • Synchronisationsmechanismen für Prozesse und Threads
  • Strukturelle Implementierung von Synchronisation
  • Spezifika der Multithreading-Implementierung im objektorientierten Ansatz (Rolle des RAII-Musters)

Speichermodell in C++

  • Objekte und Speicherorte
  • Ausführung von Operationen sowie deren Erzwingung
  • Beziehungen: Synchronisation, Vorausgehen, Ordnung der Operationen zugunsten atomarer Aktionen, Release-Sequenzen
  • Memory Barriers
  • Atomare Operationen

Thread-Management in C++14 und neueren Standards

  • std::thread-Klasse und Thread-Ausführung
  • Thread-IDentifizierung
  • Anhängen und Trennen von Threads
  • Threads versus Standardcontainer
  • Fehlerbehandlung in C++14-Threads

Gegenseitiger Ausschluss und kritische Abschnitte

  • Einfache Regeln des gegenseitigen Ausschlusses
  • Konzepte (Arten) verfügbarer Sperrobjekte
  • Schnelle Einführung in die C++14-Zeitverwaltung (chrono-Bibliothek)
  • std::mutex, std::timed_mutex, std::shared_mutex-Klassen und Ableitungen
  • RAII-Muster bei der Handhabung von Sperren (std::lock_guard, std::unique_lock)
  • Abhängige und verzögerte Sperren (std::lock)
  • Eigentum und Miteigentum an Sperren und Threads
  • Leser-Schreiber-Problem
  • Einmalinitialisierung
  • Thread-lokaler (privater) Speicher (ang. std::thread_local)

Sperren und Thread-Synchronisation

  • Operationen an Semaphoren
  • Rekursive Sperren
  • Sperren mit definierter Sperrtiefe
  • EntscheidungsvARIABLEN und Zusammenarbeit mit Sperre
  • Implementierung aktiver und passiver Barriers (ang. Idle Waits, Busy Waits)
  • Wiederaufnahme der Thread-Ausführung
  • Kommunikation zwischen Threads (Aktor-Modell und CSP-Modell)

Asynchrone Aufgaben

  • Asynchrone Ereignisse und deren Handhabung
  • Futures (ang. future)
  • Promises (ang. promise)
  • Prepared Tasks (ang. packaged_task)

Atomare Datentypen

  • Standard-atomare Datentypen
  • Universelle atomare Flagge (std::atomic_flag)
  • Template "std::atomic<T>" und seine Spezialisierungen
  • Hilfsfunktionen (freie Funktionen) für std::atomic-Typen

Spezifika der Mehrthread-API-Entwicklung

  • Strukturdesign unter Verwendung von Sperren - grob- und fein-granulare Locks
  • Nebenläufigkeitsleistungsfähigkeit – Schätzungs- und Messmethoden
  • Datenaufteilung (Particioning)
  • Skalierbarkeit von Lösungen
  • Fehlerbehandlung und Ausnahmesituationen in der Architektur

Testing und Debugging von Mehrthread-Anwendungen

  • Code-Reviews hinsichtlich Multithreading-Operationen
  • Besonderheiten beim Testen von Multithreading-Anwendungen
  • Unit Tests
  • Ausweitung der Wahrscheinlichkeit von Fehlerzuständen für Tests
  • Formale Methoden im Testing von Mehrthread-Anwendungen
  • Mehrfacharchitektur-Patterns und Testing & Debugging (Übersicht)

Fortschrittliches Thread-Management

  • Ausgelagerte Threads (Sage-Pattern)
  • Vermeidung von Datenzugriffskonkurrenz
  • Kontrolliertes Stoppen und Unterbrechen eines Threads
  • Unterbrechung blockierender Aufrufe
  • Interrupt-Handhabung
  • Task Diebstahl
  • Thread Interrupt beim Beenden der Applikation

Mehrthread-Design-Patterns

  • Arten und Verwendungszwecke von Mehrthread-Patterns
  • Anwendungsbereich der Pattern
  • Thread Pool (ang. Thread Pool)
  • Active Object Pattern (ang. Active Object)
  • Sichere Multi-Thread Queue (ang. Thread Safe Queue)
  • Producer Consumer Pattern (ang. Producer Consumer)
  • Monitor-Pattern (ang. Monitor)
  • Mehrthreadsicherheit der GoF-Patterns

Voraussetzungen

  • Kompetenter Umgang mit C++ Build-Tools unter GNU/Linux und/oder MS Windows
  • Fortgeschrittenes und mittleres Verständnis von C++-Programmierthemen (sowohl prozedurales als auch objektorientiertes Paradigma)
  • Kenntnisse in der Erstellung generischer Code (Templates)

Teilnehmerzahl


Preis je Teilnehmer (exkl. USt)

Erfahrungsberichte (1)

Kommende Kurse

Verwandte Kategorien