Подробная семантика volatile относительно своевременности видимости

Рассмотрим volatile int sharedVar. Мы знаем, что JLS дает нам следующие гарантии:

  1. каждое действие потока записи w, предшествующее его записи значения iв sharedVarв программном порядке happens-before, действие записи;
  2. запись значения iс помощьюwhappens-beforeуспешное чтение iиз sharedVarпотоком чтения r;
  3. успешное чтение iиз sharedVarпотоком чтенияrhappens-beforeвсе последующие действия rв программном порядке.

Однако по-прежнему нет гарантии времени настенных -часов относительно , когда читающий поток будет наблюдать значение i. Реализация, которая просто никогда не позволяет читающему потоку увидеть, что значение по-прежнему соответствует этому контракту.

Я думал об этом некоторое время и не вижу никаких лазеек, но я предполагаю, что они должны быть. Укажите, пожалуйста, лазейку в моих рассуждениях.

21
задан assylias 15 May 2015 в 08:02
поделиться