Schulung Embedded Programmierung mit modernem C++

Beschreibung/Inhalt

Ziele der Schulung
1. Die Vorteile von modernem C++ in der Embedded-Programmierung kennen lernen
2. Besonderen Anforderungen der Embedded-Programmierung verstehen und C++ dafür einsetzen

# 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

  • Dauer
    Auf Wunsch. Gerne geben wir Ihnen eine Empfehlung zur notwendigen Schulungsdauer, wenn Sie uns in der Anfrage Ihre Vorkenntnisse und Ziele nennen.
    Ort
    Online oder in Deutschland, Österreich und der Schweiz an Ihrem Firmensitz
    Schulungsdidaktik
    Nach Ihrer Wahl: Klassische Schulung mit PC-Übungen, reine Präsentation ohne PC-Übungen oder interaktiver Workshop mit Beratungsanteil