C++ Multithreading
Zielgruppe:
Softwareentwickler, die die Möglichkeiten der C++-Bibliothek nutzen wollen, um Multithread-Applikationen zu entwickeln.
Aufgrund der stetig zunehmenden Verbreitung von Multicore-Systemen ist dieses Training insbesondere für Entwickler geeignet, die ihre Applikationen parallelisieren wollen, um von dem Leistungszuwachs zusätzlicher Prozessorkerne profitieren zu können.
Voraussetzungen:
Gute Kenntnisse der Programmiersprache C++98 (einschließlich Templates).
Kenntnisse der (sonstigen) C++11-Spracheigenschaften sind vorteilhaft, aber keine Voraussetzung für den Kurs. Die anderen Spracheigenschaften von C++11, C++14, C++17 und C++20 werden im Kurs "Modernes C++" behandelt.
Dauer:
3 Tage (mit praktischen Übungen)
Kursziel:
Seit der C++11-Standard verfügbar ist, können Multithread-Applikationen auch plattformunabhängig direkt in C++ entwickelt werden. Dieser Kurs zeigt, welche Multithread-Eigenschaften die C++-Standardbibliothek seit Einführung der Standards C++11, C++14 and C++17 zur Verfügung stellt und wie diese angewendet werden können.
Die im Standard vorgesehenen Multithread-Funktionen sind üblicherweise nicht in der C++-Bibliothek selbst realisiert, sondern werden auf ein zugrunde liegendes Betriebssystem abgebildet. Für die richtige Anwendung benötigt man deshalb ein gutes Allgemeinverständnis der Threading-Modelle von Betriebssystemen, sowie deren Einflüsse auf das Verhalten einer Applikation. Deshalb geht der Kurs gezielt auf diese Thematik ein und bietet somit auch Entwicklern ohne Multithread-Erfahrung einen idealen Einstieg in die Multithread-Technologie.
Inhalt:
Einführung
- Multithreading-Grundlagen
- Threading-Modelle
- Single- und Multicoresysteme
- Nebenläufigkeit und Parallelität
Threadmanagement
- Erzeugen von Threads
- Parameterübergabe
- Thread-Identifikation
- Hintergrund-Threads
- Thread-Ablaufsteuerung
- Beenden von Threads
Zeitmanagement
- Absolute/relative Zeiten
- Timeouts
Sichere Nutzung von Ressourcen
- Sichere Initialisierung
- Threadlokaler Speicher
- Atomarer Speicherzugriff
- Mutexe
- Locks
- Deadlocks
- Condition Variable
- Nichtblockierender Zugriff
Asynchrone Operationen
- Futures
- Promise
- Packaged Task
- async