InterlockedExchangePointer 함수(winnt.h)
한 쌍의 주소를 원자성으로 교환합니다.
통사론
PVOID InterlockedExchangePointer(
[in, out] PVOID volatile *Target,
[in] PVOID Value
);
매개 변수
[in, out] Target
교환할 주소에 대한 포인터입니다. 이 함수는 Target 매개 변수(*Target
)가 가리키는 주소를 Value 매개 변수의 값인 주소로 설정하고 Target 매개 변수의 이전 값을 반환합니다.
[in] Value
Target 매개 변수(*Target
)가 가리키는 주소와 교환할 주소입니다.
반환 값
이 함수는 Target 매개 변수가 가리키는 초기 주소를 반환합니다.
발언
이 함수는 두 번째 매개 변수로 전달된 주소를 첫 번째 매개 변수로 복사하고 첫 번째 매개 변수의 원래 주소를 반환합니다.
64비트 시스템에서 매개 변수는 64비트이며 Target 매개 변수는 64비트 경계에 맞춰야 합니다. 그렇지 않으면 함수가 예측 불가능하게 동작합니다. 32비트 시스템에서 매개 변수는 32비트이며 Target 매개 변수는 32비트 경계에 맞춰야 합니다.
연동 함수는 여러 스레드에서 공유하는 변수에 대한 액세스를 동기화하는 간단한 메커니즘을 제공합니다. 이 함수는 다른 연동 함수에 대한 호출과 관련하여 원자성입니다.
이 함수는 가능한 경우 컴파일러 내장 함수를 사용하여 구현됩니다. 자세한 내용은 WinBase.h 헤더 파일 및 _InterlockedExchangePointer참조하세요.
이 함수는 메모리 작업이 순서대로 완료되도록 전체 메모리 장벽(또는 펜스)을 생성합니다.
itanium 기반 시스템 : 성능에 중요한 애플리케이션의 경우 InterlockedExchangePointerAcquire 대신 사용합니다.
요구 사항
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows XP [데스크톱 앱 | UWP 앱] |
지원되는 최소 서버 | Windows Server 2003 [데스크톱 앱 | UWP 앱] |
대상 플랫폼 | Windows |
헤더 | winnt.h(Windows.h 포함) |
참고 항목
연동 변수 액세스
InterlockedCompareExchange
InterlockedExchange
InterlockedExchange16
InterlockedExchange64
InterlockedExchange8
InterlockedExchangeAdd
InterlockedExchangeNoFence
interlockedExchangePointerAcquire
InterlockedExchangePointerNoFence
InterlockedExchangeSubtract
동기화 함수