다음을 통해 공유


내장 함수 _InterlockedCompareExchangePointer

Microsoft 전용

ExchangeDestination 주소가 같으면 Comparand 주소에 Destination 주소를 저장하는 원자성 작업을 수행합니다.

구문

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
);
void * _InterlockedCompareExchangePointer_rel (
   void * volatile * Destination,
   void * Exchange,
   void * Comparand
);

매개 변수

대상
[in, out] 대상 값에 대한 포인터에 대한 포인터입니다. 부호는 무시됩니다.

Exchange
[in] Exchange 포인터입니다. 부호는 무시됩니다.

비교 및 비교
[in] 대상과 비교할 포인터입니다. 부호는 무시됩니다.

반환 값

반환 값은 대상의 초기 값입니다.

요구 사항

Intrinsic 아키텍처 헤더
_InterlockedCompareExchangePointer x86, ARM, x64, ARM64 <intrin.h>
_InterlockedCompareExchangePointer_acq, _InterlockedCompareExchangePointer_nf, _InterlockedCompareExchangePointer_rel ARM, ARM64 <iiintrin.h>
_InterlockedCompareExchangePointer_HLEAcquire, _InterlockedCompareExchangePointer_HLERelease x86, x64 <immintrin.h>

설명

_InterlockedCompareExchangePointerDestination 주소와 Comparand 주소의 원자성 비교를 수행합니다. Destination 주소가 Comparand 주소와 같으면 Exchange으로 지정된 주소에 Destination 주소가 저장됩니다. 그렇지 않으면 작업이 수행되지 않습니다.

_InterlockedCompareExchangePointer 에서는 Win32 Windows SDK InterlockedCompareExchangePointer 함수에 대한 컴파일러 내장 지원을 제공합니다.

사용 _InterlockedCompareExchangePointer방법의 예는 _InterlockedDecrement 참조하세요.

ARM 플랫폼에서는 임계 영역의 시작 및 끝과 같은 위치에서 의미 체계를 획득하고 해제하려면 _acq_rel 접미사가 포함된 내장 함수를 사용합니다. ("no fence") 접미사가 있는 _nf ARM 내장 함수는 메모리 장벽으로 작동하지 않습니다.

_np("no prefetch"의 약어) 접미사가 포함된 내장 함수는 컴파일러가 가능한 프리페치 연산을 삽입하지 못하도록 차단합니다.

HLE(Hardware Lock Elision) 명령을 지원하는 Intel 플랫폼에서 _HLEAcquire_HLERelease 접미사가 포함된 내장 함수는 하드웨어에서 잠금 쓰기 단계를 제거하여 성능을 향상시킬 수 있는 힌트를 프로세서에 포함합니다. HLE을 지원하지 않는 플랫폼에서 이러한 내장 함수를 호출하면 힌트가 무시됩니다.

이러한 루틴은 내장 함수로만 사용할 수 있습니다.

Microsoft 전용 종료

참고 항목

컴파일러 내장 함수
키워드