Softwarekonferenz für parallele, nebenläufige
und asynchrone Programmierung und HPC
Heidelberg, Print Media Academy, 6.-8. März 2018

// Multithreading mit modernem C++

Dieser Workshop zu Multithreading mit modernem C++ wird die High-Level-Schnittstelle und die Low-Level-Details behandeln. In der High-Level-Schnittstelle werden Teilnehmer Threads, Locks und Mutexe, Thread-lokale Daten, Bedingungsvariablen und Tasks genau kennen lernen. Dies nicht nur in der Theorie, sondern vor allem in der Praxis. In den Low-Level-Details bekommen die Teilnehmer eine Idee, welche Probleme das C++-Speichermodell adressiert und was es heißt, lockfrei zu programmieren.

Die Teilnehmer sollten einen Rechner mit mindestens einem C++11-Compiler mitbringen.

Agenda



  • ab 10.00: Registrierung und Begrüßungskaffee

  • 11.00: Beginn

  • 11.00 - 12.30:


    • Threads


      • Erzeugung von Threads

      • Lebenszeit von Threads

      • Datenübergabe an Threads


    • Von Threads geteilten Variablen


      • Schutz mit Mutexen

      • Schutz mit Locks



  • 12.30 - 13.30: Mittagspause

  • 13.30 - 15.00:


    • Thread-sicheres Initialisieren von Daten

    • Thread-lokale Daten

    • Bedingungsvariablen


      • Gefahren von Bedingungsvariablen



  • 15.00 - 15.15: Kaffeepause

  • 15.15 - 16.30:


    • Promise und Future (Tasks)


      • Vergleich von Threads und Tasks

      • std::async

      • std::packaged_task

      • std:: promise und std::future


    • Vergleich von Tasks und Bedingungsvariablen


  • 16.30 - 16.45: Kaffeepause

  • 16.45 - 18.00:


    • Einblick in das C++ Speichermodell

    • Atomare Datentypen

    • Parallele Algorithmen der Standard Template Library (C++17)


      • Ausführungsstrategien

      • Die neuen Algorithmen



  • ca. 18 Uhr: Ende



Technische Anforderungen:


  • Jeder Teilnehmer benötigt einen Rechner mit einem C++ Compiler, der zu mindestens C++11 unterstützt. Optimal ist ein C++14 fähiger Compiler.

  • Die Schulungsunterlagen und die Beispiele werde ich auf einem USB-Stick mitbringen. Falls Sie keinen USB-Stick an Ihren Rechner anschließen können, benötige ich eine E-Mail Adresse, an die ich die Schulungsunterlagen bereits vorab schicken kann. Diese sollten dann auf dem Schulungsrechner gespeichert werden.

Vorkenntnisse
C++ und Grundlagen Multithreading

Lernziele
Ziel des Workshops ist es, die High-Level-Threading-Schnittstelle zu verstehen und sicher anzuwenden. Dabei werden die Low-Level-Details wertvolle Dienste erweisen.


// Rainer Grimm Rainer Grimm

ist seit vielen Jahren als Softwarearchitekt, Team- und Schulungsleiter tätig. Auf seinem Blog "Modernes C++" auf heise Developer beschäftigt er sich intensiv mit seiner Leidenschaft C++. Seit 2016 steht er auf selbstständigen Beinen. Insbesondere das Vermitteln von Wissen zu modernem C++ ist ihm eine Herzensangelegenheit. Seine Bücher "C++11 für Programmierer", "C++" und "C++-Standardbibliothek" für die "kurz und gut"-Reihe sind beim Verlag O'Reilly erschienen. Seine englischsprachigen Werke "The C++ Standard Library" und "Concurrency with Modern C++" hat er direkt bei Leanpub veröffentlicht.