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

C++: Speichermodell

Relaxed-Semantik

Testen Sie unsere 2016 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Mit der Relaxed-Semantik besitzt das System alle Freiheiten. Welche Aussagen zu den Variablen x und y sind möglich?
02:12

Transkript

In dieser Lektion verwende ich bei der Sukzessiven Optimierung die Relaxed-Semantik. Die Relaxed-Semantik ist die schwächste aller C++-Speichermodelle. Was heißt das? Das heißt im Wesentlichen, dass ein Thread A die Operationen im anderen Thread B nicht in der gleichen Reihenfolge wahrnehmen muss, in der der Thread B diese Operation ausgeführt hat. Es kann sogar vorkommen, dass ein Thread seine Instruktionen in einer anderen Reihenfolge ausführt als im Sourcecode drinstehen. Was heißt das für unser konkretes Programm? Ich habe hier meine atomaren Variablen X und Y; da X und Y atomar sind, ist das Programm natürlich wohldefiniert. Es kann keine Schreibe- oder Leseoperationen geben, die überlappen. Schauen wir uns mal "writing()" an: x.store und y.store hat jeweils das Flag Relaxed, "reading()" das gleiche; jeweils das Flag Relaxed. Was heißt das für die Ergebnisse? Jetzt gehe ich die einzelnen Ergebnisse durch: Erstens ist es natürlich wieder möglich, dass "writing()" vollständig zuerst ausgeführt wird. Damit habe ich die Ergebnisse 11 und 2000. Dann ist es natürlich auch möglich, dass "reading()" vollständig ausgeführt wird; da habe ich wieder die Ergebnisse 0-0. Die dritte Möglichkeit ist natürlich, dass erst x.store ausgeführt wird und dann "reading()" ausgeführt wird; also habe ich die Ergebnisse Y=0 und X=2000. Die letzte Kombinationsmöglichkeit für Y und X ist aber nur aufgrund der Relaxed-Semantik möglich. Was kann passieren? Es kann passieren, dass "reading()" die Werte von Y und X in einer anderen Reihenfolge wahrnimmt, als sie "writing()" ausgeführt hat. Das heißt, es kann durchaus passieren, dass "reading()" nur Y sieht bzw. Y den Wert 11 hat, X aber immer noch den Wert 0 besitzt. Also, es ist auch dieses Ergebnis möglich. In dieser Lektion habe ich die Relaxed-Semantik bei meinem Programm "Sukzessive Optimierung" eingesetzt. Das Ergebnis ist, dass in diesem Fall alle Kombinationsmöglichkeiten von X und Y möglich sind.

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!