gpt4 book ai didi

java - volatile 写入 = volatile 读取

转载 作者:行者123 更新时间:2023-11-30 10:15:53 27 4
gpt4 key购买 nike

我以前见过几次类似 fld = fld 的东西,但在所有这些情况下,可以消除虚拟写入并获得更好的性能。

public class Tst{
public volatile int fld = 1;

public void m(){
//... Something
fld = fld;
//... Something else
}
}

问题是这样的虚拟写入是否有它的用例或者这是一些解决方法?对我来说,这似乎与(因为根据 JMM,没有存储和负载可以通过虚拟写入重新排序)完全相同

public class Tst{
public volatile int fld = 1;
private static final Unsafe U;

public void m(){
//... Something
U.fullFence();
//... Something else
}
}

最佳答案

您的虚拟写入已损坏, volatile 写入保证在 volatile 读取之前发生,在您的“模式”中,您正在做相反的事情,因此可能会发生重新排序。

fullFence 保证不会重新排序,但不应该使用它。

关于java - volatile 写入 = volatile 读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50276345/

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