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, HeapAlloc 및 HeapReAlloc 은 충분히 정렬된 메모리를 제공합니다.
연동 함수는 여러 스레드에서 공유하는 변수에 대한 액세스를 동기화하는 간단한 메커니즘을 제공합니다. 이 함수는 다른 연동 함수에 대한 호출과 관련하여 원자성입니다.
이 함수는 가능한 경우 컴파일러 내장 함수를 사용하여 구현됩니다. 자세한 내용은 WinBase.h 헤더 파일 및 _InterlockedCompareExchange 참조하세요.
이 함수는 메모리 작업이 순서대로 완료되도록 전체 메모리 장벽(또는 펜스)을 생성합니다.
Itanium 기반 시스템: 성능에 중요한 애플리케이션의 경우 InterlockedCompareExchangeAcquire 또는 InterlockedCompareExchangeRelease 를 대신 사용합니다.
요구 사항
지원되는 최소 클라이언트 | Windows XP [데스크톱 앱 | UWP 앱] |
지원되는 최소 서버 | Windows Server 2003 [데스크톱 앱 | UWP 앱] |
대상 플랫폼 | Windows |
헤더 | winnt.h(Windows.h 포함) |
라이브러리 | Kernel32.lib |
DLL | Kernel32.dll |
참고 항목
InterlockedCompare64Exchange128
InterlockedCompareExchange16Acquire
InterlockedCompareExchange16NoFence
InterlockedCompareExchange16Release
InterlockedCompareExchangeAcquire
InterlockedCompareExchangeAcquire64
InterlockedCompareExchangeNoFence
InterlockedCompareExchangeNoFence64
InterlockedCompareExchangePointer
InterlockedCompareExchangePointerAcquire
InterlockedCompareExchangePointerNoFence
InterlockedCompareExchangePointerRelease
InterlockedCompareExchangeRelease