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

C++: Speichermodell

Nicht-atomare Variablen

Testen Sie unsere 2016 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Richtig interessant wird die Acquire-Release-Semantik, wenn sie verwendet wird, um die Effekte auf nicht-atomaren Variablen zu ordnen.
01:53

Transkript

Weiter geht es mit einem Spiel "Sukzessive Optimierung". In diesem Fall will ich Ihnen die Acquire-Release-Semantik in Kombination mit einer nicht atomaren Variablen, in diesem konkreten Fall "x", vorstellen. Zuerst zur Acquire-Release-Semantik. Ich habe hier ein "store", also ein Speichern auf der Variablen "y" mit dem Flag "memory_order_release" versehen und habe hier ein Laden auf der gleichen Variablen "y", mit dem Flag "memory_order_acquire" versehen. Was heißt das? Ich betone das jetzt extrem deutlich, weil das so ein typischer Fehler ist. Wenn das "y.store()" vor dem "y.load()" ausgeführt wird, bedeutet dies, dass das "x = 2000" hier, wenn ich es lese mit "x", zur Verfügung steht. Der entscheidende Punkt ist das "wenn". Wenn aber "y.load()" vor "y.store()" ausgeführt wird, was durchaus möglich sein kann, dann -- und jetzt ist das die Konsequenz -- kann es passieren, dass "x = 2000" gleichzeitig geschrieben wird und an dieser Stelle hier gelesen wird. Das heißt, ich habe einen konkurrierenden Zugriff auf eine geteilte Variable und einer dieser zwei Zugriffe ist ein schreibender Zugriff, genau dieser hier oben, und damit habe ich einen "Data Race" oder anders ausgedrückt einen kritischen Weglauf. Damit ist das Programm undefiniert. Es kann also wiederum alles passieren, die sogenannte "Catch-Fire-Semantik". In dieser Lektion habe ich Ihnen die Acquire-Release-Semantik in Kombination mit einer nicht atomaren Variablen "x" genauer vorgestellt. Da die Variable "x" nicht atomic ist, ist das Programmverhalten undefiniert.

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!