Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

C++: Multithreading

Die beiden Komponenten der C++-Threading-Schnittstelle

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
C++11 ist an den Anforderungen der Multicore-Architekturen orientiert und bietet ein definiertes Speichermodell und eine standardisierte Threading-Schnittstelle als Antwort.
03:46

Transkript

In dieser Lektion möchte ich Ihnen einen Überblick geben, was Sie von meinem Video "Multithreading mit modernem C++" zu erwarten haben. Mit C++11 ist sich C++ das erste Mal der Existenz von mehreren Threads bewusst. Die C++ Threading Schnittstelle besteht aus zwei Komponenten: einerseits, einem definierten Speichermodell und andererseits, einer standardisierten Threading-Schnittstelle. Nun werde ich gerne bisschen tiefer auf das definierte Speichermodell eingehen. Das definierte Speichermodell klärt Fragen rund um atomare Operationen. Was sind also Operationen, die untrennbar sind? Das können sowohl Lese-, wie auch Schreiboperationen sein. Automare Operationen definieren Speicherbarrieren. Und diese Speicherbarrieren stellen Barrieren für automare und nicht automare Operationen dar. Ein Endpunkt nennt sich Promise, ein Endpunkt nennt sich Future. Der Promise verspricht dem Future, im Ergebnis seine Berechnung zur Verfügung zu stellen, der Future wartet darauf und holt es in der Zukunft ab. Daher kommen die Namen. Immer wenn Sie Threads haben, die auf gemeinsamen Variablen agieren, und diese Variablen sind nicht konstant, müssen Sie aufpassen, dass Sie nicht gleichzeitig einen lesenden und schreibenden Zugriff haben. Haben Sie einen lesenden und schreibenden Zugriff, haben Sie ein sogenanntes Data Race oder auch einen kritischen Wettlauf. Was ist Problem von dem kritischen Wettlauf? Ganz einfach, Ihr Programm ist undefiniert. Sie haben keine Aussage darüber, was Ihr Programm tatsächlich produziert. Um was geht's bei sicher initialisierenden Daten? Oft kommt es vor, dass Sie Daten nur lesend während ihres ganzen Lebenszyklus verwenden. Lesenden Zugriff müssen Sie nicht synchronisieren. Synchronisieren ist teuer. Sie müssen nur sicherstellen, dass die Daten sicher initialisiert wurden. Und da gibt es in C++ eben Mechanismen auf der Kernsprache, die Ihnen helfen. Weiter geht's mit Thread-lokalen Daten. Thread-lokale Daten sind Daten, die exklusiv einem Thread gehören, die an die Lebenszeit des Threads gebunden sind und mit denen Sie natürlich von daher keine Probleme mit dem gemeinsamen Zugriff von Threads auf diese Daten haben. Zum Schluss noch zur Synchronisation der Threads, damit meine ich Bedingungsvariablen. Bedingungsvariablen sind der klassische Mechanismus in der Multithreading Programmierung, um so was wie Producer-Consumer-Szenarien, Arbeitsabläufe zu definieren. Sie können auch sagen: Sender/Empfänger. Was ist die Idee? Der Sender schickt eine Benachrichtigung, auf die wartet der Empfänger und sobald er die Benachrichtigung bekommt, kann er mit seiner Arbeit fortsetzen. Gerne schickt der Sender nicht nur eine Benachrichtigung, sondern er muss eine Arbeit erledigen, die Grundlage ist für den Empfänger, bevor er mit seiner Arbeit beginnen kann. Da nennt man es dann eher Producer bzw. Consumer. In dieser Lektion habe ich Ihnen einen Überblick gegeben, über die Themen, die ich in meinem Video "Multithreading mit modernem C++" vorstelle. Die Multithreading Fähigkeit in C++ besteht aus einer Lowlevel- und einer Highlevel-Schnittstelle. Insbesondere auf die Highlevel- Schnittstelle werde ich tief eingehen.

C++: Multithreading

Lernen Sie die High-Level Threading-Schnittstelle in C++ kennenb und nutzen, die Sie in Form von Threads, Tasks, Locks und Bedingungsvariablen zur Anwendung bringen.

2 Std. 40 min (39 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Software:
Exklusiv für Abo-Kunden
Erscheinungsdatum:16.08.2016

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!