次の方法で共有


InterlockedCompareExchange 関数 (wdm.h)

InterlockedCompareExchange ルーチンは、Destination が指す入力値と comperand の値比較するアトミック操作を実行します。

構文

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

パラメーター

[in, out] Destination

Comperandの値と比較される入力値へのポインター。

[in] ExChange

Destination が指す入力値が comperand の値と等しい場合に、Destination指す出力値 指定します。

[in] Comperand

Destination によって指される入力値と比較される値指定します。

戻り値

InterlockedCompareExchange は、*Destinationの元の値を返します。

備考

Comperand が *Destinationに等しい場合、 *Destination は Exchange 等しく設定されます。 それ以外の場合、*Destination は変更されません。

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

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

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

必要条件

要件 価値
サポートされる最小クライアント Windows 2000 以降で使用できます。
ターゲット プラットフォーム 万国
ヘッダー wdm.h (Wdm.h、Ntddk.h、Ntifs.h、ミニポート h を含む)
ライブラリ Windows 10 の OneCoreUAP.lib
IRQL 任意のレベル

関連項目

ExInterlockedCompareExchange64

InterlockedCompareExchangePointer

InterlockedDecrement

InterlockedExchange

InterlockedExchangePointer

InterlockedIncrement