繁体   English   中英

“三元CAS操作”在理论上可能吗?

[英]“Ternary CAS operation” theoretically possible?

我经常遇到希望以某种方式解决问题的情况:

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(...)之间可能存在上下文切换。 因此,我需要一种叫做“三元布尔”的东西,它可以在一个CAS操作中完成bool1.get()bool2.compareSet(...)

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

使用AtomicInteger(也具有CompareSet方法),将布尔值建模为位域。 您可以在一个整数中对32个布尔值进行建模。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM