SW-Entwicklung und Implementierung

Einführung in die Multi-Threading-Programmierung mit C++

Multi-Threading-Anwendungen eröffnen Möglichkeiten, die bei Single-Threaded-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 Multi-Threading-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 die Libraries Boost, Qt und POCO zum Einsatz.
Teilnehmervorausetzungen: Gute C++ Kenntnisse und Praxiserfahrung. Grundkenntnisse im Themenfeld Multi-Threading sind wünschenswert. Bitte beachten Sie auch die Schulung Effiziente C++ Entwicklung: Elemente für hochperformante Embedded Systeme Teil 2 – Multi-Threading und Multi-Processing.

Themenauswahl

  • Die Begriffe Nebenläufigkeit, Parallelität, Multi-Processing, Multi-Threading
  • Quasi-Parallelität und echte Parallelität, Multi-Core-Plattformen
  • Vorteile von Multi-Threaded-Anwendungen
  • Herausforderungen bei der Konstruktion von Multi-Threaded-Anwendungen
  • Wichtige Grundlagen und Begriffe
  • Überblick über gängige Mechanismen im Multi-Threading-Umfeld
  • Überblick und Gegenüberstellung: Bekannte Bibliotheken für die Multi-Threading-Programmierung im C++ Umfeld, insbesondere Boost, Qt und POCO
  • Multi-Threading und der neue Standard C++11/14
  • Einfache Synchronisations-Primitive, z.B. Mutex und Condition Variable
  • 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
  • Shut down und Cancellation
  • Verschiedene Ausprägungen von Task Schedulern
  • Event-Handling im Multi-Threading-Umfeld
  • Asynchronous Completion Notification
  • Future Pattern
  • Active Object Pattern
  • Generierung von Elementen für das Active Object Pattern mit C++ Bordmitteln
  • Überblick: Weitere Synchronisationsmittel
  • Berücksichtigung von Multi-Threading in der Architekturarbeit
  • Welche Building Blocks sind in welchen Szenarien sinnvoll: Ausbildung, neues Team, Architekturarbeit
  • Ausblick: Spezielle Techniken und Bibliotheken für die effektive Nutzung von Multi-Core-Architekturen

Telefon: 07247-954550
info@maurer-treutner.de