다음을 통해 공유


내장 함수 _InterlockedExchangePointer

Microsoft 전용

첫 번째 인수에 두 번째 인수로 전달된 주소를 복사하고 첫 번째 인수의 원래 주소를 반환하는 원자성 교환 작업을 수행합니다.

구문

void * _InterlockedExchangePointer(
   void * volatile * Target,
   void * Value
);
void * _InterlockedExchangePointer_acq(
   void * volatile * Target,
   void * Value
);
void * _InterlockedExchangePointer_rel(
   void * volatile * Target,
   void * Value
);
void * _InterlockedExchangePointer_nf(
   void * volatile * Target,
   void * Value
);
void * _InterlockedExchangePointer_HLEAcquire(
   void * volatile * Target,
   void * Value
);
void * _InterlockedExchangePointer_HLERelease(
   void * volatile * Target,
   void * Value
);

매개 변수

대상
[in, out] 교환할 값에 대한 포인터에 대한 포인터입니다. 함수는 값을 Value설정하고 이전 값을 반환합니다.


[in] Target이 가리키는 값과 교환할 값입니다.

반환 값

이 함수는 Target이 가리키는 초기 값을 반환합니다.

요구 사항

Intrinsic 아키텍처 헤더
_InterlockedExchangePointer x86, ARM, x64, ARM64 <intrin.h>
_InterlockedExchangePointer_acq, _InterlockedExchangePointer_rel, _InterlockedExchangePointer_nf ARM, ARM64 <intrin.h>
_InterlockedExchangePointer_HLEAcquire, _InterlockedExchangePointer_HLERelease X64 <immintrin.h>

x86 아키텍처에서 _InterlockedExchangePointer_InterlockedExchange를 호출하는 매크로입니다.

설명

64비트 시스템에서 매개 변수는 64비트이며 64비트 경계에 맞춰야 합니다. 그렇지 않으면 함수가 실패합니다. 32비트 시스템에서 매개 변수는 32비트이며 32 비트 경계에 정렬해야 합니다. 자세한 내용은 맞춤을 참조 하세요.

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

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

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

Microsoft 전용 종료

참고 항목

컴파일러 내장 함수
x86 컴파일러와 충돌