Eine Reihe von Aktionen A ist passiert-vor-konsistent, wenn für alle Lesevorgänge r in A, wobei W(r) die von r gesehene Schreibaktion ist, weder hb(r, W(r)) noch ein Schreib-w in A existiert, so dass w.v = r.v und hb(W(r), w) und hb(w, r)"
Nach meinem Verständnis entspricht es den folgenden Wörtern:
..., es ist so, dass weder ... noch ...
Meine ersten beiden Fragen sind also:
- Ist mein Verständnis richtig?
- Was bedeutet "w.v = r.v" bedeuten?
Code: Select all
Thread 1 Thread 2
B = 1; A = 2;
r2 = A; r1 = B;
Code: Select all
1: B = 1;
3: A = 2;
2: r2 = A; // sees initial write of 0
4: r1 = B; // sees initial write of 0
Nach meinem Verständnis liegt der Grund für das anfängliche Schreiben von 0 sowohl bei r2 als auch bei r1 darin, dass sowohl A als auch B keine flüchtigen Felder sind. Meine vierte Frage lautet also: Ist mein Verständnis richtig?
In zweiter Ausführungsreihenfolge:
Code: Select all
1: r2 = A; // sees write of A = 2
3: r1 = B; // sees write of B = 1
2: B = 1;
4: A = 2;
Meine fünfte und sechste Frage lauten also: Existiert diese Situation (Lesevorgänge siehe später auftretende Schreibvorgänge) in der realen Welt? Wenn ja, könnten Sie mir ein reales Beispiel geben?
Mobile version