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 と等しい場合、*Destination は Exchange と等しく設定されます。 それ以外の場合、*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