InterlockedCompareExchange 함수(miniport.h)

InterlockedCompareExchange 루틴은 Destination이 가리키는 입력 값과 Comparand 값을 비교하는 원자성 연산을 수행합니다.

구문

LONG InterlockedCompareExchange(
  [in, out] LONG volatile *Destination,
            LONG          ExChange,
            LONG          Comperand
);

매개 변수

[in, out] Destination

Comparand 값과 비교되는 입력 값에 대한 포인터입니다.

ExChange

Destination이 가리키는 입력 값이 Comparand 값과 같으면 Destination이 가리키는 출력 값을 지정합니다.

Comperand

Destination이 가리키는 입력 값과 비교되는 값을 지정 합니다.

반환 값

InterlockedCompareExchange 는 *Destination의 원래 값을 반환합니다.

설명

Comparand가 *Destination과 같으면 *DestinationExchange와 같도록 설정됩니다. 그렇지 않으면 *대상 은 변경되지 않습니다.

InterlockedCompareExchange 는 여러 스레드에서 공유하는 변수의 테스트 및 업데이트를 동기화하는 빠르고 원자성 있는 방법을 제공합니다. Destination이 가리키는 입력 값이 Comparand 값과 같으면 Destination의 출력 값이 Exchange 값으로 설정됩니다.

InterlockedCompareExchange 는 속도를 위해 설계되었으며 일반적으로 컴파일러에서 인라인으로 구현됩니다. InterlockedCompareExchange 는 다른 InterlockedXxx 호출에 대해서만 원자성입니다. 스핀 잠금을 사용하지 않으며 페이지 가능한 데이터에서 안전하게 사용할 수 있습니다.

캐시되지 않은 메모리에서는 연동 작업을 사용할 수 없습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000부터 사용할 수 있습니다.
대상 플랫폼 유니버설
헤더 miniport.h(Wdm.h, Ntddk.h, Ntifs.h, Miniport.h 포함)
라이브러리 Windows 10 OneCoreUAP.lib
IRQL 모든 수준

추가 정보

ExInterlockedCompareExchange64

InterlockedCompareExchangePointer

InterlockedDecrement

InterlockedExchange

InterlockedExchangePointer

InterlockedIncrement