InterlockedCompareExchange 関数 (ミニポート.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 と等しく設定されます。 それ以外の場合、*Destination は変更されません。

InterlockedCompareExchange は、複数のスレッドで共有される変数のテストと更新を高速かつアトミックに同期する方法を提供します。 Destination が指す入力値が Comparand の値と等しい場合、Destination の出力値は Exchange の値に設定されます。

InterlockedCompareExchange は速度を考慮して設計されており、通常はコンパイラによってインラインで実装されます。 InterlockedCompareExchange は、他の InterlockedXxx 呼び出しに対してのみアトミックです。 これはスピン ロックを使用せず、ページング可能なデータで安全に使用できます。

インターロックされた操作は、キャッシュされていないメモリでは使用できません。

要件

要件
サポートされている最小のクライアント Windows 2000 以降で使用できます。
対象プラットフォーム ユニバーサル
Header miniport.h (Wdm.h、Ntddk.h、Ntifs.h、Miniport.h を含む)
Library Windows 10の OneCoreUAP.lib
IRQL 任意のレベル

こちらもご覧ください

ExInterlockedCompareExchange64

InterlockedCompareExchangePointer

InterlockedDecrement

InterlockedExchange

InterlockedExchangePointer

InterlockedIncrement