2013-06-30 2 views
4

위한 CompareAndSwap 구현 원자 조작 CompareAndExchangeint, long, double과 참조 타입에 대해 정의된다. 하지만 bool 유형의 경우 CompareAndExchange가 필요합니다. bool에 대해 CompareAndSwap을 어떻게 구현할 수 있습니까?.NET 프레임 워크 BOOL

답변

4

당신은 래퍼 부울 값을 정의하며, 다음과 같이 T where T : classCompareExchange 과부하를 사용할 수 있습니다

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) ... 
    ... 
} 
+0

니스. 내가 당신의 접근 방식에 대해 정말로 좋아하는 것은 단 한 번의 복싱 비용 만 있다는 것입니다. – Steven

0

dablinkenlight의 접근 방식에 대한 대안이 0false입니다 Int32 과부하 및 0이 아닌를 사용하는 것 값은 true입니다.