|
|
|
volatile sequental consistency
|
|||
|---|---|---|---|
|
#18+
или эта нотация подходит такой код? Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2017, 13:31 |
|
||
|
volatile sequental consistency
|
|||
|---|---|---|---|
|
#18+
questioner Не понял почему запрещен такой результат. Эта нотация записи говорит, что r3 happens before r2 ? Потому что он противоречит требованию sequential consistency, что и указано на слайде. Наверное стоило бы прочитать о SC хотя бы на википедии? Вот поражаюсь вам ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2017, 14:16 |
|
||
|
volatile sequental consistency
|
|||
|---|---|---|---|
|
#18+
забыл ник, Вопрос про форму записи же. Человек что-то объясняет основываясь на неё. Откуда википедия знает эту нотацию? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2017, 14:23 |
|
||
|
volatile sequental consistency
|
|||
|---|---|---|---|
|
#18+
questioner, Что не так с формой записи? (r1,r2,r3,r4) = (some val, some val, some val, some val) стандартная запись того чему равны переменные после исполнения кода? Шипилев так и говрит, что ситуация когда 1,0,1,0 противоречит SO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2017, 14:29 |
|
||
|
volatile sequental consistency
|
|||
|---|---|---|---|
|
#18+
забыл ник, я не говорю, что с ней не так что-то. Я спрашиваю соответствует ли эта форму коду, что я написал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2017, 14:35 |
|
||
|
volatile sequental consistency
|
|||
|---|---|---|---|
|
#18+
забыл ник, Кстати что такое SO ? Здесь же по сути 3 операции над каждой переменной. Может какая-то фишка, что переменных 2 ? запись и 2 чтения над x(для y выглядит аналогично), которые никак не упорядочены. Что мешает случиться чтению 0 потом случится запись, и потом чтение 1? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2017, 15:12 |
|
||
|
volatile sequental consistency
|
|||
|---|---|---|---|
|
#18+
questionerзабыл ник, Кстати что такое SO ? Здесь же по сути 3 операции над каждой переменной. Может какая-то фишка, что переменных 2 ? запись и 2 чтения над x(для y выглядит аналогично), которые никак не упорядочены. Что мешает случиться чтению 0 потом случится запись, и потом чтение 1? С Вашим уровнем понимания не стоит лезть в эту тему. Всё одно ничего не получится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2017, 15:20 |
|
||
|
volatile sequental consistency
|
|||
|---|---|---|---|
|
#18+
Alexey Tomin С Вашим уровнем понимания не стоит лезть в эту тему. Всё одно ничего не получится. Может таки снизойдёте? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2017, 15:25 |
|
||
|
volatile sequental consistency
|
|||
|---|---|---|---|
|
#18+
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, то невозможно было бы написать даже простейший цикл в однопоточном приложении. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2017, 15:29 |
|
||
|
volatile sequental consistency
|
|||
|---|---|---|---|
|
#18+
забыл ник, Да, понял, спасибо. записи x и y упорядочены для других потоков. Что-то полюбому случится раньше первая комбинация говорит, что сначала записался y потом мы в этом потоке сделали 2 чтения, потом только записался x Но во втором примере x записался до y. Противоречие Alexey Tomin Видите, получилось ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2017, 15:55 |
|
||
|
volatile sequental consistency
|
|||
|---|---|---|---|
|
#18+
questionerНе понял почему запрещен такой результат. Эта нотация записи говорит, что r3 happens before r2 ? Этот слайд вообще не про happens-before order, согласно hb вариант (1,0,1,0) вполне легален. А результат такой запрещен потому, что невозможно придумать synchronization order, который бы привел к такому результату. Когда проверяете осуществимость любого экзекьюшена всегда проверяйте валидность на оба порядка, про synchronization order многие часто забывают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2017, 16:59 |
|
||
|
volatile sequental consistency
|
|||
|---|---|---|---|
|
#18+
vimbaquestionerНе понял почему запрещен такой результат. Эта нотация записи говорит, что r3 happens before r2 ? Этот слайд вообще не про happens-before order, согласно hb вариант (1,0,1,0) вполне легален. А результат такой запрещен потому, что невозможно придумать synchronization order, который бы привел к такому результату. Когда проверяете осуществимость любого экзекьюшена всегда проверяйте валидность на оба порядка, про synchronization order многие часто забывают. А можете пример придумать когда проверили happens-before - ок, а execution order не проверили и это стало причиной фейла? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2017, 17:18 |
|
||
|
|

start [/forum/topic.php?fid=59&gotonew=1&tid=2122514]: |
0ms |
get settings: |
8ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
41ms |
get topic data: |
12ms |
get first new msg: |
7ms |
get forum data: |
3ms |
get page messages: |
74ms |
get tp. blocked users: |
2ms |
| others: | 201ms |
| total: | 374ms |

| 0 / 0 |
