Я понимаю, что read-приобретает (не переупорядочивает с последующими операциями чтения/записи после него) и write-release (не переупорядочивает с предшествующими им операций чтения/записи). Мой q: -
- В случае чтения-получения, предшествуют ли записи, сделанные после этого?
- В случае записи-записи обновить предыдущие чтения?
Кроме того, читается-приобретает то же самое, что и volatile read, и записывает release так же, как volatile write в Java?
Почему это важно, так это, чтобы взять случай с записью-релизом.
y = x; // a read.. let 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? Здесь рассмотрим готовность к летучести. Я понимаю, что все хранилища до волатильности будут сначала видимыми.. и тогда только изменчивые будут видны. Спасибо.
Ссылка: - http://preshing.com/20120913/acquire-and-release-semantics/