다음을 통해 공유


InterlockedCompareExchange128 함수(winnt.h)

지정된 값에 대해 원자성 비교 및 교환 작업을 수행합니다. 함수는 두 개의 지정된 128비트 값과 교환을 비교 결과에 따라 다른 128비트 값과 비교합니다.

16비트 값에서 작동하려면 InterlockedCompareExchange16 함수를 사용합니다.

32비트 값에서 작동하려면 InterlockedCompareExchange 함수를 사용합니다.

64비트 값에서 작동하려면 InterlockedCompareExchange64 함수를 사용합니다.

구문

BOOLEAN InterlockedCompareExchange128(
  [in, out] LONG64 volatile *Destination,
  [in]      LONG64          ExchangeHigh,
  [in]      LONG64          ExchangeLow,
  [in, out] LONG64          *ComparandResult
);

매개 변수

[in, out] Destination

대상 값에 대한 포인터입니다. 이 매개 변수는 128비트 필드로 간주되는 두 개의 64비트 정수 배열입니다.

[in] ExchangeHigh

교환 값의 상위 부분입니다.

[in] ExchangeLow

교환 값의 하위 부분입니다.

[in, out] ComparandResult

비교할 값입니다. 이 매개 변수는 128비트 필드로 간주되는 두 개의 64비트 정수 배열입니다. 출력에서 대상의 원래 값으로 덮어씁니다.

반환 값

ComparandResultDestination 매개 변수의 원래 값과 같으면 함수는 1을 반환하고, ComparandResultDestination 매개 변수의 원래 값과 같지 않으면 0을 반환합니다.

설명

함수는 대상 값을 ComparandResult 값과 비교합니다.

  • 대상 값이 ComparandResult 값과 같으면 ExchangeHighExchangeLow 값은 Destination에 지정된 배열과 ComparandResult로 지정된 배열에도 저장됩니다.
  • 그렇지 않으면 대상 은 수정되지 않은 상태로 남아 있습니다.
비교 결과에 관계없이 원래 대상 값은 ComparandResult로 지정된 배열에 저장됩니다.

이 함수의 매개 변수는 16 바이트 경계에 맞춰야 합니다. 그렇지 않으면 함수는 x64 시스템에서 예측 불가능하게 동작합니다. _aligned_malloc 참조하세요.

상호 잠긴 함수는 여러 스레드에서 공유하는 변수에 대한 액세스를 동기화하기 위한 간단한 메커니즘을 제공합니다. 이 함수는 다른 상호 잠긴 함수에 대한 호출과 관련하여 원자성입니다.

이 함수는 x64 기반 시스템에서만 사용할 수 있으며 컴파일러 내장 함수를 사용하여 구현됩니다. 자세한 내용은 WinBase.h 헤더 파일 및 _InterlockedCompareExchange128 참조하세요.

이 함수는 메모리 작업이 순서대로 완료되도록 전체 메모리 장벽(또는 펜스)을 생성합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 8 [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2012 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 winnt.h(Windows.h 포함)

추가 정보

인터로 잠긴 변수 액세스

InterlockedCompare64Exchange128

InterlockedCompareExchange

InterlockedCompareExchange16

InterlockedCompareExchange16Acquire

InterlockedCompareExchange16NoFence

InterlockedCompareExchange16Release

InterlockedCompareExchange64

InterlockedCompareExchangeAcquire

InterlockedCompareExchangeAcquire64

InterlockedCompareExchangeNoFence

InterlockedCompareExchangeNoFence64

InterlockedCompareExchangePointer

InterlockedCompareExchangePointerAcquire

InterlockedCompareExchangePointerNoFence

InterlockedCompareExchangePointerRelease

InterlockedCompareExchangeRelease

InterlockedCompareExchangeRelease64

동기화 함수