SW-Entwicklung und Implementierung

Modernes C++: Multithreading (Teil 2)

Ausgehend von dem Basiswissen um die Besonderheiten des Multithreading und der grundlegenden Higher Level Building Blocks wird diskutiert, wie man Performance-Potentiale mit einfachen Mitteln ausschöpfen kann. Robustheit und Lesbarkeit sollen dabei nicht kompromittiert werden. Auf der technischen Ebene kommen auch stärker plattformabhängige Elemente zum Einsatz. Es wird großen Wert darauf gelegt, die Randbedingungen und Seiteneffekte der Bausteine zu diskutieren, um im Projekt die Risiken im Vorfeld besser einschätzen zu können.

Diese Schulung richtet sich an alle C++ Entwickler mit guten Grundkenntnissen der Mulitthreading-Programmierung und ist darüber hinaus eine ideale Ergänzung zu unserer Schulung Modernes C++: Multithreading (Teil 1)

Themenauswahl

  • Multithreading: Vorteile, Nachteile und Mythen
  • Vier Abstraktions- und Orientierungsebenen
  • Die wichtigsten Elemente des Betriebssystems und des Prozessors in Bezug auf Performance und Robustheit
  • Ein einfaches Modell einer Multi-Prozessor-Plattform
  • Scheduling, Context Switch, Contention, Cache, Cache Lines, False Sharing
  • C++ Memory Model
  • Schwache und starke Thread Safety
  • C++-Sprachkern und Standardbibliothek: Welche Elemente sind unter welchen Randbedingungen Thread-safe
  • Vergleich wichtiger Mutex-Varianten
  • Atomic Variables
  • Thread-safe Container und Lock-free Container
  • Tipps zur Reduzierung des Synchronisationsaufwands
  • Ausgewählte Best Practices für das Design von Multithreading-Anwendungen
  • Best Practices zum Schnittstellenentwurf
  • Shared Data und Exclusive Usage
  • Snapshots
  • Optimistisches und pessimistisches Locken
  • Higher Level Building Blocks und Performance
  • Wie konfiguriert man Task Scheduler abhängig von Plattform und Timing Constraints
  • Klassisches Pipelining und das Half Sync/Half Async Pattern
  • Modernes Pipelining und das Leader-Followers Pattern
  • Pipelinig mit der Intel TBB mit CPU- und I/O-intensiven Filtern
  • Alternativen zum Multithreading

Jetzt Kontakt aufnehmen!