gpt4 book ai didi

java - "Ternary CAS operation"理论上可能吗?

转载 作者:行者123 更新时间:2023-11-29 07:42:47 25 4
gpt4 key购买 nike

我经常遇到我希望问题能像这样解决的情况:

AtomicBoolean bool1 = new AtomicBoolean();
AtomicBoolean bool2 = new AtomicBoolean();

boolean expected = false; // whatever
boolean update = false; // whatever

if(bool1.get()) {
bool2.compareSet(expected, update);
}

但这不起作用,因为可以在 bool1.get()bool2.compareSet(...) 之间进行上下文切换。所以需要的是我称之为“三元原子 boolean 值”的东西,它可以做 bool1.get()bool2.compareSet(...)在一次 CAS 操作中。

我的问题是是否可以做到。有没有人知道有人也在考虑这个问题(一些大学)或者有没有人知道现有的解决方案接近所需的解决方案(我的意思是没有锁,同步块(synchronized block),互斥锁,信号灯,但使用 CAS仅基于算法)。

最佳答案

使用 AtomicInteger,它也有一个 CompareSet 方法,并将您的 boolean 值建模为位域。您可以在一个整数中建模 32 个 boolean 值。

关于java - "Ternary CAS operation"理论上可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28580245/

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