Я понимаю, что такое чтение-получение (не меняет порядок с последующими операциями чтения / записи после него) и запись-освобождение (не меняет порядок с предшествующими операциями чтения / записи). Мой вопрос: -
- В случае чтения-получения сбрасываются ли предшествующие записи?
- В случае записи-выпуска обновляются ли предыдущие чтения?
Кроме того, считывание-получение - это то же самое, что и энергозависимое чтение, и выпуск записи, такой же, как энергозависимая запись в Java?
Почему это важно, так это то, что давайте возьмем случай записи-освобождения ..
y = x; // a read.. let's say x is 1 at this point
System.out.println(y);// 1 printed
//or you can also consider System.out.println(x);
write_release_barrier();
//somewhere here, some thread sets x = 2
ready = true;// this is volatile
System.out.println(y);// or maybe, println(x).. what will be printed?
На данный момент x 2 или 1? Вот считай, готов быть нестабильным. Я понимаю, что сначала будут сделаны видимыми все хранилища до volatile .. а затем будут видны только volatile. Спасибо.
Ссылка: - http://preshing.com/20120913/acquire-and-release-semantics/