InterlockedCompareExchange 함수(winnt.h)

지정된 값에 대해 원자성 비교 및 교환 작업을 수행합니다. 함수는 두 개의 지정된 32비트 값과 교환을 비교 결과에 따라 다른 32비트 값과 비교합니다.

포인터 값을 교환하는 경우 이 함수는 InterlockedCompareExchangePointer 함수로 대체되었습니다.

64비트 값에서 작동하려면 InterlockedCompareExchange64 함수를 사용합니다.

구문

LONG InterlockedCompareExchange(
  [in, out] LONG volatile *Destination,
  [in]      LONG          ExChange,
  [in]      LONG          Comperand
);

매개 변수

[in, out] Destination

대상 값에 대한 포인터입니다.

[in] ExChange

교환 값입니다.

[in] Comperand

Destination과 비교할 값 입니다.

반환 값

함수는 Destination 매개 변수의 초기 값을 반환합니다.

설명

함수는 Destination 값을 Comparand 값과 비교합니다. Destination 값이 Comparand 값과 같으면 Exchange 값은 Destination에 지정된 주소에 저장됩니다. 그렇지 않으면 작업이 수행되지 않습니다.

이 함수의 매개 변수는 32비트 경계에 맞춰야 합니다. 그렇지 않으면 함수는 다중 프로세서 x86 시스템 및 x86이 아닌 시스템에서 예측 불가능하게 동작합니다. malloc, calloc, HeapAllocHeapReAlloc 은 충분히 정렬된 메모리를 제공합니다.

연동 함수는 여러 스레드에서 공유하는 변수에 대한 액세스를 동기화하는 간단한 메커니즘을 제공합니다. 이 함수는 다른 연동 함수에 대한 호출과 관련하여 원자성입니다.

이 함수는 가능한 경우 컴파일러 내장 함수를 사용하여 구현됩니다. 자세한 내용은 WinBase.h 헤더 파일 및 _InterlockedCompareExchange 참조하세요.

이 함수는 메모리 작업이 순서대로 완료되도록 전체 메모리 장벽(또는 펜스)을 생성합니다.

Itanium 기반 시스템: 성능에 중요한 애플리케이션의 경우 InterlockedCompareExchangeAcquire 또는 InterlockedCompareExchangeRelease 를 대신 사용합니다.

참고 이 함수는 Windows RT 기반 시스템에서 지원됩니다.
 

요구 사항

   
지원되는 최소 클라이언트 Windows XP [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱 | UWP 앱]
대상 플랫폼 Windows
헤더 winnt.h(Windows.h 포함)
라이브러리 Kernel32.lib
DLL Kernel32.dll

참고 항목

Interlocked 변수 액세스

InterlockedCompare64Exchange128

InterlockedCompareExchange128

InterlockedCompareExchange16

InterlockedCompareExchange16Acquire

InterlockedCompareExchange16NoFence

InterlockedCompareExchange16Release

InterlockedCompareExchange64

InterlockedCompareExchangeAcquire

InterlockedCompareExchangeAcquire64

InterlockedCompareExchangeNoFence

InterlockedCompareExchangeNoFence64

InterlockedCompareExchangePointer

InterlockedCompareExchangePointerAcquire

InterlockedCompareExchangePointerNoFence

InterlockedCompareExchangePointerRelease

InterlockedCompareExchangeRelease

InterlockedCompareExchangeRelease64

동기화 함수