InterlockedCompareExchange64 関数 (winnt.h)
指定した値に対してアトミックな比較と交換操作を実行します。 関数は、指定された 2 つの 64 ビット値を比較し、比較の結果に基づいて別の 64 ビット値と交換します。
構文
LONG64 InterlockedCompareExchange64(
[in, out] LONG64 volatile *Destination,
[in] LONG64 ExChange,
[in] LONG64 Comperand
);
パラメーター
[in, out] Destination
変換先の値へのポインター。
[in] ExChange
交換値。
[in] Comperand
Destination と比較する値。
戻り値
関数は Destination パラメーターの初期値を返します。
注釈
関数は、 Destination 値と Comparand 値を比較します。 Destination の値が Comparand 値と等しい場合、Exchange の値は Destination で指定されたアドレスに格納されます。 それ以外の場合は演算が実行されません。
この関数の変数は、64 ビット境界に配置する必要があります。それ以外の場合、この関数はマルチプロセッサ x86 システムおよび x86 以外のシステムで予期しない動作をします。 「_aligned_malloc」を参照してください。
インターロック関数は、複数のスレッドによって共有される変数へのアクセスを同期するための簡単なメカニズムを提供します。 この関数は、他のインターロックされた関数の呼び出しに関してアトミックです。
この関数は、可能な限りコンパイラ組み込みを使用して実装されます。 詳細については、WinBase.h ヘッダー ファイルと _InterlockedCompareExchange64を参照してください。
この関数は、メモリ操作が順番に完了するように、完全なメモリ バリア (またはフェンス) を生成します。
Itanium ベースのシステム: パフォーマンスが重要なアプリケーションの場合は、代わりに InterlockedCompareExchangeAcquire64 または InterlockedCompareExchangeRelease64 を使用してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista [デスクトップ アプリのみ | UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2003 [デスクトップ アプリのみ | UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | winnt.h (Windows.h を含む) |
Library | Kernel32.lib |
[DLL] | Kernel32.dll |
関連項目
InterlockedCompare64Exchange128
InterlockedCompareExchange16Acquire
InterlockedCompareExchange16NoFence
InterlockedCompareExchange16Release
InterlockedCompareExchangeAcquire
InterlockedCompareExchangeAcquire64
InterlockedCompareExchangeNoFence
InterlockedCompareExchangeNoFence64
InterlockedCompareExchangePointer
InterlockedCompareExchangePointerAcquire
InterlockedCompareExchangePointerNoFence
InterlockedCompareExchangePointerRelease
InterlockedCompareExchangeRelease