Jak to się dzieje, zanim się skończy

Wrozdział 17 JLS, wprowadza koncepcję: zdarza się - zanim będzie spójna.

Zestaw akcji A zdarza się - przed spójnym, jeżeli dla wszystkich odczytów rw A, gdzie W (r) jest akcją zapisu widzianą przez r, to nie jest tak, że hb (r, W (r)) lub tamto istnieje zapis w w A taki, że wv = rv i hb (W (r), w) i hb (w, r) ”

W moim rozumieniu jest to równoznaczne z następującymi słowami: ... jest tak, że ani ... ani ...

Moje pierwsze dwa pytania to:

czy moje zrozumienie jest właściwe?co oznacza „w.v = r.v”?

Daje również przykład: 17.4.5-1

Thread 1 Thread 2

B = 1; A = 2; 

r2 = A; r1 = B; 

W pierwszej kolejności wykonania:

1: B = 1;

3: A = 2;

2: r2 = A;  // sees initial write of 0

4: r1 = B;  // sees initial write of 0

Już samo zamówienie mówi nam, że dwa wątki są wykonywane naprzemiennie, więc moje trzecie pytanie brzmi: co oznacza lewy numer?

W moim rozumieniu powodem r2 i r1 jest to, że początkowe zapisanie 0 jest zarówno A, jak i B nie jest polem zmiennym. Więc moim czwartym pytaniem jest: czy moje zrozumienie jest słuszne?

W drugiej kolejności wykonania:

1: r2 = A;  // sees write of A = 2

3: r1 = B;  // sees write of B = 1

2: B = 1;

4: A = 2;

Zgodnie z definicją zdarza się - przed konsekwencją, nie jest trudne do zrozumienia, że ​​kolejność wykonywania się zdarza - przed spójnością (jeśli moje pierwsze zrozumienie jest poprawne). Więc moje piąte i szóste pytanie brzmi: czy istnieje taka sytuacja (czyta się, że pisma pojawiają się później) w prawdziwym świecie? Jeśli tak, czy możesz dać mi prawdziwy przykład?

questionAnswers(4)

yourAnswerToTheQuestion