VarHandle内存语义理解->可见性

时间:2019-06-27 08:33:35

标签: java shared-memory java-memory-model

根据内存的语义和模型,我们通过指令重新排序和在屏障周围缓存刷新/更新来理解内存。在Varhandle类Java中,dey引入了许多内存语义,但几乎没有解释它的确切作用?我有以下问题需要澄清->

a)是否进行普通设置和获取,就像普通的内存访问一样,没有内存顺序限制,也没有可见性保证??? b)不透明的内存语义->它到底能做什么?它是对主内存的简单内存读写(不涉及缓存),周围没有任何内存排序限制吗???文档说->它保证单个线程对相同变量的有序访问。 c)获取/释放和易失性之间的区别?

谢谢

1 个答案:

答案 0 :(得分:0)

这是我从以下文档中得到的-> http://gee.cs.oswego.edu/dl/html/j9mm.html Acquire/Release versus Sequentially Consistent memory order

a)纯模式->仅原始和引用的get和set是原子的,允许所有排序,并且不进行缓存刷新。 b)不透明->确保在程序顺序线程间仅可见一个变量。没有保证/约束其他变量可见性线程间 c)获取/发布->相同的可变全订单保证加在保证之前发生。缓存在获取时是否无效,发布时是否缓存刷新 d)易失性->所有易失性变量的完全有序的内存访问。完全按计划订单要求。