Vielen Dank für die Zusendung Ihrer Anfrage! Eines unserer Teammitglieder wird Sie in Kürze kontaktieren.
Vielen Dank, dass Sie Ihre Buchung abgeschickt haben! Eines unserer Teammitglieder wird Sie in Kürze kontaktieren.
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)
Erfahrungsberichte (1)
Praktische Beispiele
Jan Kaniuka - SIEC BADAWCZA LUKASIEWICZ - PRZEMYSLOWY INSTYTUT AUTOMATYKI I POMIAROW PIAP
Kurs - Programowanie wielowątkowe w języku C++
Maschinelle Übersetzung