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

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как понять, что происходит - прежде чем последовательно

Сообщение Anonymous »

В главе 17 JLS вводится концепция: согласованность «происходит до того».


Набор действий A является согласованным до того, как произойдет, если для всех операций чтения r в A, где W(r) — действие записи, видимое r, это не тот случай, когда либо hb(r, W(r)) или существует запись w в A такая, что w.v = r.v и 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 не являются изменчивыми полями. Итак, мой четвертый вопрос: правильно ли я понимаю?

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

Код: Выделить всё

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

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

2: B = 1;

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


Подробнее здесь: https://stackoverflow.com/questions/119 ... consistent
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»