2016-03-19 3 views
4

Я пытаюсь понять требование причинности JMM. Этот раздел JMM описывает его https://docs.oracle.com/javase/specs/jls/se7/html/jls-17.html#jls-17.4.8требование причинности в JMM

Что означает E в определении причинности. Означает ли это выполнение, которое мы пытаемся оправдать или выполнение, чтобы оправдать фиксацию от Ci до Ci + 1??

Также в 9 правилах определения причинности добавляются действия от A до совершенного набора действий от Ci-1 до Ci или от Ci до Ci + 1.?

ответ

0

Что означает E в определении причинности. Означает ли это выполнение, которое мы пытаемся оправдать или выполнение, чтобы оправдать фиксацию от Ci до Ci + 1??

E является выполнение которых причинным действительность, которую вы пытаетесь определить.

E я являются хорошо сформированные казни, с помощью которого вы можете работать с причинностью без введения понятия общего порядка времени.

Также в 9 правилах определения причинности используются для добавления действия от A к совершенному набору действий от Ci-1 до Ci или от Ci до Ci + 1.?

Я не уверен, что я понимаю ваш вопрос. Моя попытка ответить может включать перефразирование вещей, которые вам не интересны, но, пожалуйста, несите меня.

Выполнение действительно с точки зрения причинности Java-модели памяти, если все ее действия могут быть совершено в соответствии с правилами раздела 17.4.8.

Правила в этом разделе определяют, что можно сделать, установив набор правил для создания из пустого набора совершенных действий, чтобы в конечном итоге установить все действия выполнения. Это делается с дискретным числом шагов, и для каждого действия выполняются правила согласованности и инварианты для совершённых действий на каждом шаге и их отношение к совершенным действиям на предыдущем этапе в различных исполнениях (E vs E i сверху).

Что касается совершения действий в соответствии с последним правилом (девятый пронумерованные пули в разделе 17.4.8) по определению, каждое множество С я является собственным подмножеством С + 1, так действия не совершаются из C я к C я + 1, но из к C я.

Я нашел следующие две ссылки на лучшие ресурсы для очистки туман вокруг причинности в ЯВМ:

  1. JMM Causality Test Cases
  2. Alexey Shipilev's JMM Pragmatics talk

P.S. Для людей, которые не имеют контекста об этой части спецификации, основной точкой раздела 17.4.8 является преодоление разрыва между происходит до последовательных исполнений и SC DRF (последовательно согласованный, без гонок данных). Разница между этими двумя являются так называемыми значениями тонкого воздуха, которые запрещены критической частью 17.4.8, и которые могут быть довольно ужасны, если их не остановить.