powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / volatile sequental consistency
14 сообщений из 14, страница 1 из 1
volatile sequental consistency
    #39540427
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость


Это картинка из видео
YouTube Video
...
Рейтинг: 0 / 0
volatile sequental consistency
    #39540451
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
или эта нотация подходит такой код?

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
public class SequintalConsistency {
    static volatile int r1;
    static volatile int r2;
    static CountDownLatch latch = new CountDownLatch(1);

    public static void main(String[] args) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    latch.await();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                r1 = 0;
            }
        }).start();
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    latch.await();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                r2 = 0;
            }
        }).start();
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    latch.await();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println("r1=" + r1 + ", r2=" + r2);
            }
        }).start();
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    latch.await();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println("r1=" + r1 + ", r2=" + r2);
            }
        }).start();
        latch.countDown();
    }
}
...
Рейтинг: 0 / 0
volatile sequental consistency
    #39540479
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questioner


Не понял почему запрещен такой результат.

Эта нотация записи говорит, что r3 happens before r2 ?

Потому что он противоречит требованию sequential consistency, что и указано на слайде. Наверное стоило бы прочитать о SC хотя бы на википедии? Вот поражаюсь вам
...
Рейтинг: 0 / 0
volatile sequental consistency
    #39540487
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
забыл ник,

Вопрос про форму записи же. Человек что-то объясняет основываясь на неё. Откуда википедия знает эту нотацию?
...
Рейтинг: 0 / 0
volatile sequental consistency
    #39540495
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questioner,

Что не так с формой записи? (r1,r2,r3,r4) = (some val, some val, some val, some val) стандартная запись того чему равны переменные после исполнения кода? Шипилев так и говрит, что ситуация когда 1,0,1,0 противоречит SO
...
Рейтинг: 0 / 0
volatile sequental consistency
    #39540503
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
забыл ник,

я не говорю, что с ней не так что-то.

Я спрашиваю соответствует ли эта форму коду, что я написал.
...
Рейтинг: 0 / 0
volatile sequental consistency
    #39540549
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
забыл ник,

Кстати что такое SO ?

Здесь же по сути 3 операции над каждой переменной. Может какая-то фишка, что переменных 2 ?

запись и 2 чтения над x(для y выглядит аналогично), которые никак не упорядочены.

Что мешает случиться чтению 0 потом случится запись, и потом чтение 1?
...
Рейтинг: 0 / 0
volatile sequental consistency
    #39540561
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerзабыл ник,

Кстати что такое SO ?

Здесь же по сути 3 операции над каждой переменной. Может какая-то фишка, что переменных 2 ?

запись и 2 чтения над x(для y выглядит аналогично), которые никак не упорядочены.

Что мешает случиться чтению 0 потом случится запись, и потом чтение 1?

С Вашим уровнем понимания не стоит лезть в эту тему. Всё одно ничего не получится.
...
Рейтинг: 0 / 0
volatile sequental consistency
    #39540566
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey Tomin
С Вашим уровнем понимания не стоит лезть в эту тему. Всё одно ничего не получится.

Может таки снизойдёте?
...
Рейтинг: 0 / 0
volatile sequental consistency
    #39540572
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerзабыл ник,

Кстати что такое SO ?

Здесь же по сути 3 операции над каждой переменной. Может какая-то фишка, что переменных 2 ?

запись и 2 чтения над x(для y выглядит аналогично), которые никак не упорядочены.

Что мешает случиться чтению 0 потом случится запись, и потом чтение 1?

Фишка в том что не переменных 2, а потока. Ну и да, если один поток прочитал volatile переменную, то он должен увидеть все то, что произошло до этого чтения в рамках ЭТОГО потока. В этом и есть весь смысл volatile.
Для того чтобы увидеть 1,0,1,0 Нужно
1) Так как r1 устанавливается только в первом потоке, то чтобы она была = 1, y тоже должен быть один.
2) Значит y=1 уже выполнилось, ВСЕ, волатильная переменная прочиталась с последним значением, она уже не может в другом потоке оказаться 0(при условии что не было обратного присвоения y=0, а его не было по условию
3) r2 = x это также чтение волатильной переменной, тоже создает fence. По условию, r2 = 0, вследтсвие so, y на этот момент =1 и нету никаких инструкций которые могут это изменить.
4) r3=x По условия равно 1, значит произошло x = 1, так как y не могло поменяться то мы приходим к противоречию что r4 = 0

Точно также доказывается в обратную сторону.
Если бы не было so, то невозможно было бы написать даже простейший цикл в однопоточном приложении.
...
Рейтинг: 0 / 0
volatile sequental consistency
    #39540592
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
забыл ник,

Да, понял, спасибо.

записи x и y упорядочены для других потоков.

Что-то полюбому случится раньше первая комбинация говорит, что сначала записался y потом мы в этом потоке сделали 2 чтения, потом только записался x

Но во втором примере x записался до y. Противоречие


Alexey Tomin


Видите, получилось
...
Рейтинг: 0 / 0
volatile sequental consistency
    #39540642
vimba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerНе понял почему запрещен такой результат.
Эта нотация записи говорит, что r3 happens before r2 ?

Этот слайд вообще не про happens-before order, согласно hb вариант (1,0,1,0) вполне легален.
А результат такой запрещен потому, что невозможно придумать synchronization order, который бы привел к такому результату. Когда проверяете осуществимость любого экзекьюшена всегда проверяйте валидность на оба порядка, про synchronization order многие часто забывают.
...
Рейтинг: 0 / 0
volatile sequental consistency
    #39540652
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vimbaquestionerНе понял почему запрещен такой результат.
Эта нотация записи говорит, что r3 happens before r2 ?

Этот слайд вообще не про happens-before order, согласно hb вариант (1,0,1,0) вполне легален.
А результат такой запрещен потому, что невозможно придумать synchronization order, который бы привел к такому результату. Когда проверяете осуществимость любого экзекьюшена всегда проверяйте валидность на оба порядка, про synchronization order многие часто забывают.

А можете пример придумать когда проверили happens-before - ок, а execution order не проверили и это стало причиной фейла?
...
Рейтинг: 0 / 0
volatile sequental consistency
    #39540669
vimba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questioner,

не execution order, synchronization order. Я на практике, такого не встречал, выдумывать не хочу.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / volatile sequental consistency
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]