Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

C++: Speichermodell

Sequenzielle Konsistenz

Testen Sie unsere 2018 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Die sequenzielle Konsistenz ist das Default-Speichermodell bei atomaren Operationen. Bei ihr gilt die globale Ordnung aller Operationen auf allen Threads.
03:08

Transkript

In dieser Lektion möchte ich Ihnen das Standard-C++-Speichermodell genauer vorstellen. Das Standard-C++-Speichermodell ist die sequenzielle Konsistenz. Die Definition der sequentiellen Konsistenz geht bereits auf das Jahr 1979 zurück. Die Definition stammt von Lesley Lamport. Die besteht aus zwei Teilen. Die Anweisungen eines Programms werden in der Sourcecode-Reihenfolge ausgeführt. Zweitens, es gibt eine globale Reihenfolge aller Operationen auf allen Threads. Was heißt das? Jeder Thread führt seine Instruktionen in der Reihenfolge durch, in der sie im Sourcecode drin stehen. Das ist die erste Aussage. Zweitens, alle Threads etablieren eine globale Reihenfolge aller Operationen. D.h. wenn eine Operation A im Thread 1 ausgeführt wird, ist die Operation zum gleichen Zeitpunkt im Thread 2 sichtbar, bzw. das Ergebnis dieser Operation. Thread 1 führt "x.store(1)" aus und er lädt "y". Thread 2 führt "y.store(1)" aus und er lädt "x". Was heißt das, wenn wir uns die Definition der Sequenziellen Konsistenz genau anschauen? Das heißt "x.store(1)" wird immer vor "y.load" ausgeführt, "y.store(1)" wird immer vor "x.load" ausgeführt. Und wenn "x.store(1)" ausgeführt wird, sieht Thread 2 diese Schreiboperation zum gleichen Zeitpunkt. Sie können sich das vorstellen wie ein globaler Zeittakt, d.h. eine Uhr, die tickt, und zu jedem Tick wird eine Operation hier ausgeführt. Der Rest ist eigentlich relativ einfach, relativ. Welche Ausführungsreihenfolgen sind jetzt möglich bei diesen zwei Threads? Wir wissen, dass "x.store" immer vor "y.load" ausgeführt wird, dass "y.store" immer vor "x.load" ausgeführt wird. D.h. diese relative Reihenfolge muss immer gewahrt bleiben. Das ist die erste Bedingung, die die Sequenzielle Konsistenz aufstellt. Die zweite Bedingung sagt, dass es eine globale Reihenfolge gibt. Und wenn Sie sich jetzt überlegen, wie Sie das komponieren können, kommen sechs verschiedene Kombinationsmöglichkeiten heraus. Ich spiele die mal durch. In der Kombinationsmöglichkeit 1 wird erst vollständig Thread 1 ausgeführt und dann Thread 2. Es geht natürlich auch genau anders herum, erst vollkommen Thread 2 und dann Thread 1. Und jetzt gibt es halt die verschiedenen verschränkten Ausführungen. Hier bei der zweiten wird erst "x.store(1)" ausgeführt, dann "y.store(1)", dann kommt "y.load" zum Zuge und dann "x.load" zum Zuge. Das sind eben sechs Kombinationsmöglichkeiten. Das ist die sequenzielle Konsistenz. Dieses C++-Speichermodell deckt sich noch mit unserer natürlichen Intuition. Selbst bei diesem einfachen Modell ist es möglich, dass Sie aus vier Instruktionen, sechs verschiedene verschränkte Ausführungen erhalten. In dieser Lektion habe ich Ihnen die sequenzielle Konsistenz vorgestellt. Das ist das Standard-C++-Speichermodell, das bereits 1979 von Lesley Lamport definiert wurde.

C++: Speichermodell

Verstehen und nutzen Sie die Konzepte und die zugrundeliegenden TEchnolgien des Speichermodells in C++.

1 Std. 29 min (29 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Software:
Exklusiv für Abo-Kunden
Erscheinungsdatum:24.11.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!