В глава 17 JLS в ней вводится понятие: бывает - до согласованного.
Выполняется множество действий A - до согласованного, если для всех читает r в A, где W (r) - это действие записи, наблюдаемое r, то нет необходимости в том, чтобы либо hb (r, W (r)), или что существует запись w в такая, что wv = rv и hb (W (r), w) и 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 не изменчивым полем. Итак, мой четвертый quesiton: правильно ли я понимаю?
Во втором порядке выполнения:
1: r2 = A; // sees write of A = 2
3: r1 = B; // sees write of B = 1
2: B = 1;
4: A = 2;
В соответствии с определением происшествия - до согласованности, нетрудно понять, что это исполнение выполняется, - до согласованного (если мое первое понимание правильное). Итак, мои пятый и шестой вопросы: существует ли такая ситуация (читает см. Записи, которые происходят позже) в реальном мире? Если да, не могли бы вы дать мне настоящий пример?