Как понять бывает -до последовательного

В главе 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)"

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

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

  • правильно ли я понимаю?
  • что означает "w.v = r.v"?

Он также дает пример :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;

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

11
задан assylias 15 August 2012 в 13:49
поделиться