Java Memory Model вопрос: Executions and Causality Requirements
От: WinnieJayClay Финляндия  
Дата: 17.08.14 05:18
Оценка:
Запутался в нотации, может кто-нибудь просто объяснить что означает (как читать) эта нотация в спецификации:
hbi|Ci = hb|Ci

soi|Ci = so|Ci

Vi|Ci = V|Ci

Wi|Ci-1 = W|Ci-1


http://docs.oracle.com/javase/specs/jls/se8/html/jls-17.html#jls-17.4.8

от сюда:

Given these sets of actions C0, ... and executions E1, ... , every action in Ci must be one of the actions in Ei. All actions in Ci must share the same relative happens-before order and synchronization order in both Ei and E. Formally:

Ci is a subset of Ai

hbi|Ci = hb|Ci

soi|Ci = so|Ci


The values written by the writes in Ci must be the same in both Ei and E. Only the reads in Ci-1 need to see the same writes in Ei as in E. Formally:

Vi|Ci = V|Ci

Wi|Ci-1 = W|Ci-1
Re: Java Memory Model вопрос: Executions and Causality Requirements
От: devcoach  
Дата: 17.08.14 11:13
Оценка:
Здравствуйте, WinnieJayClay, Вы писали:
WJC>Запутался в нотации, может кто-нибудь просто объяснить что означает ...
В общих словах это означает:
1) Если вы прочитали какое-то значение, то оно было кем-то записано ранее (гарантия отсутствия out-of-thin-air значений).
2) Если вы что-то прочитали, и это что-то было записано через всякие volatile/synchronized, то у вас будут и гарантии видимости предыдущих изменений согласно acquire/release семантике.

Спецификация JMM не предназначена для чтения широким кругом лиц. Ее цель — максимально полно и точно описать, что делает JMM с формальной точки зрения. К сожалению, как нельзя что-то сделать быстро, качественно и дешево одновременно, точно так же нельзя описать что-либо полно, точно и понятно одновременно. Поэтому я вам рекомендую бросить это бесперспективное занятие, и делать упор на практику и чтение объяснений JMM человеческим языком в различных статьях и блогах.
Я не постесняюсь сказать, что хорошо понимаю JMM. При этом я раз 20 открывал эту спецификацию, пытаясь что-то понять, и четко уловил, ну максимум несколько не самых сложных абзацев Это теоретическое обоснование JMM, которое нужно только тем, кто ее разрабатывает и обосновывает с академической точки зрения. На практике от нее толка нет.
Re: Java Memory Model вопрос: Executions and Causality Requirements
От: Fuud  
Дата: 18.08.14 07:01
Оценка:
Рекомендую прочитать (если хорошо с английским) http://shipilev.net/blog/2014/jmm-pragmatics/
слайды про тоже на русском http://shipilev.net/talks/narnia-2555-jmm-pragmatics-ru.pdf
тот же доклад в виде видео (рус) http://www.youtube.com/watch?v=noDnSV7NCtw и http://www.youtube.com/watch?v=Ky1_5mabd18
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.