Embedded Programmierung mit modernem C++
- Kurs-Nr.:
- 11
- Ort:
- Online-Schulung
Beschreibung
Dauer
- 3 Tage
Begleitliteratur
Vorgehensweise
- Theorie und Praxis mit vielen Übungen, zu denen Sie den Sourcecode und die Musterlösungen erhalten
- Sie benötigen ein Laptop mit einem aktuellen C++ Compiler (mind. C++11)
Ziel
- Die Vorteile von modernem C++ in der embedded Programmierung kennen lernen
- Besonderen Anforderungen der embedded Programmierung verstehen und C++'s Antworten einsetzen
Standard
- C++11/C++14 Standard
Inhalt
Sicherheitskritische Systeme
- Vereinheitlichte Initialisierung mit {} überall anwenden und dadurch die heimliche Verengung von Datentypen vermeiden
- Automatische Typableitung kennen lernen um Refaktoring von Code zu unterstützen und Variablen immer zu initialisieren
- Aufzählungen mit Gültigkeitsbereich als typsichere Variante zu klassischen Aufzählungen kennen lernen
- Mit nullptr Zeiger die Mehrdeutigkeiten der Zahl 0 und dem Makro NULL verhindern
- Benutzerdefinierte Literale einsetzen um Zahlen mit Einheiten zu verwenden
- Zusicherungen an den Code mit static_assert vom Compiler prüfen lassen
Hohe Performanz
- Selbst optimierenden Code mit Type-Traits implementieren
- Konstante Ausdrücke mit constexpr verwenden um teuere Berechnung auf die Compilezeit zu verschieben
- Durch den Umstieg von geordnete auf ungeordnete assoziative Container die Applikation deutlich beschleunigen
- Templates
- Vermittlung der Grundlagen
- Vorteile von Templates vorstellen
- Vergleich von statischem Polymorphismus (Templates) mit dynamischen Polymorphismus (Objekt-Orientierung)
Eingeschränkte Ressourcen
- Move-Semantik einsetzen um
- Teures Kopieren durch billiges Verschieben zu ersetzen
- Daten nur dann zu erzeugen, wenn es unbedingt notwendig ist
- Daten zu verschieben, die nicht kopiert werden können
- Perfekt Forwarding um Funktions-Argumente identisch weiterzureichen
- Speicherverwaltung
- Den Einsatz von new und delete besser verstehen
- placement new für besondere Einsatzzwecke verwenden
- Speicherlöcher durch placement new finden
- Den neuen Container std::array kennen lernen, der die Speicher- und Laufzeitcharakteristik des C-Arrays mit dem Interface des C++-Vektors verbindet
- Smart Pointer
- Exklusive Besitzverhältnisse mit std::unique_ptr
- Geteilte Besitzverhältnisse mit std::shared_ptr
- Zeitweise Besitzverhältnisse mit std::weak_ptr
- Performanz- und Ressourcenvergleich der Smart Pointer
Mehrere Aufgaben gleichzeitig
- Das Speichermodell
- Sequenzielle Konsistenz verstehen
- Atomare Datentypen kennen lernen
- Threads
- Erzeugen eines Threads
- Lebenszeit eines Threads
- Datenübergabe an einen Thread
- Gemeinsame von Threads verwendete Daten
- Schutz mit Mutexen
- Schutz mit Locks
- Daten thread-sicher initialisieren
- Konstanten Ausdrücken
- Die Funktion std::call_once und dem Flag std::once_flag
- Statischen Variablen
- Thread lokale Variablen
- Bedingungsvariablen
- Synchronisation von Threads
- Gefahren von Bedingungsvariablen
- Task
- std::async
- std::packaged_task
- std::promise und std::future
Teilnahmebedingungen:
Die allgemeinen Teilnahmebedingungen befinden sich in den AGBs.