interlock.Compare... 에 관해서 질문드립니다.

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
2개의 좋아요

알고 계시는 정보가 맞나요?

반환
location1의 원래 값입니다.
4개의 좋아요

첫번째 인자와, 세번째 인자가 같을 경우 두번째 인자를 첫번째 인자에 설정합니다.

3개의 좋아요