在 .NET 框架中,原子操作CompareAndExchange 仅为 、和引用int类型定义。但我需要 CompareAndExchange 的类型。我该如何实施?longdoubleboolCompareAndSwapbool
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 0isfalse和任何非零值 is true。
于 2013-06-30T17:50:55.007 回答