【发布时间】:2016-06-18 21:43:12
【问题描述】:
我理解 read-acquire(不会在之后的读/写操作重新排序)和 write-release(不会在其之前的读/写操作重新排序)。 我的q是:-
- 在读取-获取的情况下,它之前的写入是否会被刷新?
- 在写入释放的情况下,之前的读取是否会更新?
另外,Java中read-acquire和volatile read一样吗,write release和volatile write一样吗?
为什么这很重要,让我们以 write-release 为例..
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/
【问题讨论】:
标签: java multithreading