在 .NET 框架中,原子操作CompareAndExchange 仅为 、和引用int
类型定义。但我需要 CompareAndExchange 的类型。我该如何实施?long
double
bool
CompareAndSwap
bool
问问题
248 次
2 回答
6
您可以定义包装布尔值,并使用CompareExchange
重载 for T where 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) ...
...
}
于 2013-06-30T17:25:12.363 回答
1
dablinkenlight 方法的替代方法是使用Int32
重载 where 0
isfalse
和任何非零值 is true
。
于 2013-06-30T17:50:55.007 回答