SW-Entwicklung und Implementierung

Modernes C++: Multithreading (Teil 1)

Multithreading-Anwendungen eröffnen Möglichkeiten, die bei Singlethreaded-Anwendungen nicht zur Verfügung stehen. Die effektive Ausnutzung von Multi-Core-Architekturen ist eines der aktuell häufig diskutierten Beispiele. Allerdings sind die Anwendung von Design Patterns für nebenläufige Anwendungen, die Auswahl passender Bibliotheken und der professionelle Umgang mit Synchronisationsmitteln u.ä. im Entwickleralltag nicht einfach, oft wird die Komplexität der Aufgaben unterschätzt.

Möchte man Multi-Threading-Technologien mit modernen Prinzipien der SW-Architektur verbinden, kommen weitere anspruchsvolle Fragestellungen hinzu. Das sehr herausfordernde und komplexe Thema soll durch die Diskussion robuster und bewährter Building Blocks, insbesondere bekannter Library-Elemente und Design Patterns praxisgerecht vereinfacht werden.

Diese Schulung vermittelt zunächst das nötige Basiswissen rund um die Themen Thread-Erzeugung und einfache Synchronisationsmittel und geht dann auf die spezifischen Schwierigkeiten bei der Multithreading-Programmierung ein. Anschließend werden praxistaugliche Lösungsansätze erarbeitet, in denen höhere Mechanismen, wie das Active Object Pattern bevorzugt werden. Das Training wird durch viele Demonstrationen mit lauffähigem Code unterstützt, dabei kommen neben der C++-Standardbibliothek auch Teile der Boost-Bibliothek zum Einsatz.

Teilnehmervorausetzungen: Gute C++ Kenntnisse und Praxiserfahrung.

Themenauswahl

  • Nebenläufigkeit, Parallelität, Multi-Processing, Multithreading
  • Quasi-Parallelität und echte Parallelität, Multi-Core-Plattformen
  • Vorteile von Multithreaded-Anwendungen
  • Herausforderungen bei der Konstruktion von Multi-Threaded-Anwendungen
  • Wichtige Grundlagen und Begriffe
  • Taskbasierte Programmierung
  • Multithreading in modernem C++
  • C++-Multithreading und native Threading-Mechanismen
  • C++ Synchronisations-Mechanismen
  • Immutable Objects
  • Monitor Object Pattern
  • Strategized Locking Pattern
  • Asynchroner Funktionsaufruf
  • Einfache, zustandsorientierte aktive Objekte
  • Prinzip der synchronisierten Produzenten/Konsumenten
  • Synchronisierte Container
  • Einfache Thread Pools und Message Scheduler
  • Shutdown und Cancellation
  • Verschiedene Ausprägungen von Task Schedulern
  • Event Handling im Multithreading-Umfeld
  • Asynchronous Completion Notification
  • Future und Promise
  • Active Object Pattern und seine Umsetzung
  • Nebenläufigkeit in der Architektur
  • Ausblick: Spezielle Bibliotheken für die effektive Nutzung von Multi-Core-Architekturen

Jetzt Kontakt aufnehmen!