gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 03:49:45 31 4
gpt4 key购买 nike

通过内存语义和模型,我们通过指令重新排序和围绕屏障的缓存刷新/更新来理解它。在Java的Varhandle类中,他们引入了许多内存语义,但很少解释它到底做了什么?我有以下问题和需要澄清 ->

a) 简单的 set 和 get 是否像正常的内存访问一样,没有内存排序限制,也没有可见性保证???b) 不透明内存语义 -> 它到底是做什么的?它是一个简单的内存读取和写入主内存(不涉及缓存)而没有任何内存排序限制吗???文档说 -> 它保证单个线程对同一变量的有序访问。c) 获取/释放和 volatile 之间的区别?

谢谢

最佳答案

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

a) 普通模式 -> 只有原语和引用的 get 和 set 是原子的,允许所有排序且不刷新缓存。b) 不透明 -> 保证程序顺序线程间中只有一个变量的可见性。不保证/限制线程间其他变量的可见性c) 获取/释放 -> 相同的变量完整订单保证加上发生在保证之前。获取时缓存是否无效,释放时缓存是否刷新d) volatile -> 所有 volatile 变量的完全有序的内存访问。按照计划顺序完全符合预期。

关于java - VarHandle内存语义理解->可见性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56787057/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com