.NET フレームワークでは、アトミック操作CompareAndExchangeint
は、 、long
、double
および参照型に対してのみ定義されています。しかし、型には CompareAndExchange が必要ですbool
。に実装するにはどうすればよいCompareAndSwap
ですbool
か?
質問する
248 次
2 に答える
6
次のように、ラッパーのブール値を定義し、CompareExchange
オーバーロードを使用できます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 に答える