C# 为bool实现CompareAndSwap

C# 为bool实现CompareAndSwap,c#,boolean,compare-and-swap,C#,Boolean,Compare And Swap,在.NET framework中,原子操作仅为int、long、double和引用类型定义。但是我需要对bool类型进行比较索引更改。如何为bool实现CompareAndSwap?您可以定义包装布尔值,并对T使用compareeexchange重载,其中T:class,如下所示: private static object TrueObj = true; private static object FalseObj = false; ... object val = TrueObj; obje

在.NET framework中,原子操作仅为
int
long
double
和引用类型定义。但是我需要对
bool
类型进行比较索引更改。如何为
bool
实现
CompareAndSwap

您可以定义包装布尔值,并对
T使用
compareeexchange
重载,其中T:class
,如下所示:

private static object TrueObj = true;
private static object FalseObj = false;
...
object val = TrueObj;
object result = Interlocked.CompareExchange(ref val, TrueObj, FalseObj);
if (val == FalseObj) { // Alternatively you could use if (!(bool)val) ...
    ...
}

Dabinkenlight方法的另一种替代方法是使用
Int32
重载,其中
0
false
,任何非零值均为
true

Nice。我真正喜欢你的方法是,只有一次性的拳击费用。