Как понять, что происходит, прежде чем последовательно

Вглава 17 JLS, это вводит понятие: случается, прежде чем последовательный.

A set of actions A is happens-before consistent if for all reads r in A, where W(r) is the write action seen by r, it is not the case that either hb(r, W(r)) or that there exists a write w in A such that w.v = r.v and hb(W(r), w) and hb(w, r)"

В моем понимании это соответствует следующим словам: ... это тот случай, когда ни ... ни ...

Итак, мои первые два вопроса:

is my understanding right? what does "w.v = r.v" mean?

Это также дает пример: 17.4.5-1

Thread 1 Thread 2

B = 1; A = 2; 

r2 = A; r1 = B; 

В первом порядке исполнения:

1: B = 1;

3: A = 2;

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

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

Сам заказ уже сказал нам, что два потока выполняются поочередно, поэтому мой третий вопрос: что означает оставленное число?

В моем понимании, причина того, что r2 и r1 могут видеть начальную запись 0, состоит в том, что и A, и B не являются изменчивым полем. Итак, мой четвертый вопрос: правильно ли я понимаю?

Во втором порядке исполнения:

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

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

2: B = 1;

4: A = 2;

В соответствии с определением последовательности «до и после» нетрудно понять, что порядок выполнения происходит до «согласованности» (если мое первое понимание верно). Итак, мой пятый и шестой вопросы: существует ли такая ситуация (читает, пишет, что происходит позже) в реальном мире? Если да, не могли бы вы привести реальный пример?

Ответы на вопрос(4)

Ваш ответ на вопрос