_InterlockedCompareExchangePointer Intrinsic Functions
Microsoft 전용
Comparand 및 Destination 주소가 같으면 Destination 주소에 Exchange 주소를 저장하는 원자성 작업을 수행합니다.
void * _InterlockedCompareExchangePointer ( void * volatile * Destination, void * Exchange, void * Comparand ); void * _InterlockedCompareExchangePointer_acq ( void * volatile * Destination, void * Exchange, void * Comparand ); void * _InterlockedCompareExchangePointer_HLEAcquire ( void * volatile * Destination, void * Exchange, void * Comparand ); void * _InterlockedCompareExchangePointer_HLERelease ( void * volatile * Destination, void * Exchange, void * Comparand ); void * _InterlockedCompareExchangePointer_nf ( void * volatile * Destination, void * Exchange, void * Comparand ); void * _InterlockedCompareExchangePointer_np ( void * volatile * Destination, void * Exchange, void * Comparand ); long _InterlockedCompareExchangePointer_rel ( void * volatile * Destination, void * Exchange, void * Comparand );
매개 변수
[in, out] Destination
대상 값에 대한 포인터의 포인터입니다. 부호는 무시됩니다.[in] Exchange
Exchange 포인터입니다. 부호는 무시됩니다.[in] Comparand
대상과 비교할 포인터입니다. 부호는 무시됩니다.
반환 값
반환 값은 대상의 초기 값입니다.
요구 사항
내장 함수 |
아키텍처 |
Header |
---|---|---|
_InterlockedCompareExchangePointer |
x86, ARM, x64 |
<intrin.h> |
_InterlockedCompareExchangePointer_acq, _InterlockedCompareExchangePointer_nf, _InterlockedCompareExchangePointer_rel |
ARM |
<iiintrin.h> |
_InterlockedCompareExchangePointer_HLEAcquire, _InterlockedCompareExchangePointer_HLERelease |
x86, x64 |
<immintrin.h> |
설명
_InterlockedCompareExchangePointer는 Destination 주소와 Comparand 주소의 원자성 비교를 수행합니다. Destination 주소가 Comparand 주소와 같으면 Destination으로 지정된 주소에 Exchange 주소가 저장됩니다. 그렇지 않으면 작업이 수행되지 않습니다.
_InterlockedCompareExchangePointer는 Win32 Windows SDK _InterlockedCompareExchangePointer 함수에 대한 컴파일러 내장 함수 지원을 제공합니다.
_InterlockedCompareExchangePointer를 사용하는 방법의 예제는 _InterlockedDecrement를 참조하세요.
ARM 플랫폼에서는 임계 영역의 시작 및 끝과 같은 위치에서 의미 체계를 획득하고 해제하려면 _acq 및 _rel 접미사가 포함된 내장 함수를 사용합니다. _nf("no fence"의 약어) 접미사가 포함된 ARM 내장 함수는 메모리 장벽으로 작동하지 않습니다.
_np("no prefetch"의 약어) 접미사가 포함된 내장 함수는 컴파일러가 가능한 프리페치 연산을 삽입하지 못하도록 차단합니다.
HLE(Hardware Lock Elision) 명령을 지원하는 Intel 플랫폼에서 _HLEAcquire 및 _HLERelease 접미사가 포함된 내장 함수는 하드웨어에서 잠금 쓰기 단계를 제거하여 성능을 향상시킬 수 있는 힌트를 프로세서에 포함합니다. HLE를 지원하지 않는 플랫폼에서 이러한 내장 함수를 호출하면 힌트는 무시됩니다.
이러한 루틴은 내장 함수로만 사용할 수 있습니다.