int intDone = 10;
Console.WriteLine("interrock ref value => "
+ Interlocked.CompareExchange(ref _intDone, 0, 1)
+ " : "
+ _intDone);
일단 제가 알고 있는 것은 위의 두번째인자 (0) 과 세번째인자(1) 이 같으면 _indDone 값이 같으면 두번째(혹은 세번째 어짜피 같으니깐) 값으로 참조값으로 나오는 것으로 압니다.
그런데 두, 세번째 인자값을 동일하게 해도 틀리게 해도 그냥 초기 값만 나옵니다 ㅠㅠ
제가 뭘 잘못알고 있는건지 알고 싶습니다.
_intDone = 10;
Console.WriteLine("interrock ref value => "
+ Interlocked.CompareExchange(ref _intDone, 0, 1)
+ " : "
+ _intDone);
Console.WriteLine("interrock ref value => "
+ Interlocked.CompareExchange(ref _intDone, 1, 0)
+ " : "
+ _intDone);
Console.WriteLine("interrock ref value => "
+ Interlocked.CompareExchange(ref _intDone, 1, 1)
+ " : "
+ _intDone);
: 결과
interrock ref value => 10 : 10
interrock ref value => 10 : 10
interrock ref value => 10 : 10