_InterlockedCompare64Exchange128、_InterlockedCompare64Exchange128_acq、_InterlockedCompare64Exchange128_rel
[このドキュメントはプレビュー版であり、後のリリースで変更されることがあります。 Blank topics are included as placeholders.]
Microsoft 固有の仕様 →
Win32 の関数に分割 Windows SDK InterlockedCompareExchange ビットのコンパイラの組み込みサポートが用意されています。
__int64 _InterlockedCompare64Exchange128(
__int64 volatile * Destination,
__int64 ExchangeHigh,
__int64 ExchangeLow,
__int64 Comperand
);
__int64 _InterlockedCompare64Exchange128_acq(
__int64 volatile * Destination,
__int64 ExchangeHigh,
__int64 ExchangeLow,
__int64 Comperand
);
__int64 _InterlockedCompare64Exchange128_rel(
__int64 volatile * Destination,
__int64 ExchangeHigh,
__int64 ExchangeLow,
__int64 Comperand
);
パラメーター
[入力、出力] Destination
ビットの終了値へのポインター。[入力] ExchangeHigh
交換する価値の最も重要な 64 ビット。[入力] ExchangeLow
交換する価値の最下位の 64 ビット。[入力] Comperand
ターゲットと比較する値。
戻り値
戻り値は初期配置先の最下位のビット 64 の値です。
必要条件
_InterlockedCompare64Exchange128
IPF_InterlockedCompare64Exchange128_acq
IPF_InterlockedCompare64Exchange128_rel
IPF
ヘッダー ファイル <intrin.h>
解説
この関数の組み込み形式の名前では先頭にアンダースコア () があることに注意してください。 これらの組み込み関数がとして常に配置されることに注意してください。 これは /Oi を使用しては必要ないことを意味します。 /O2 と暗黙的な /Oi。
必要に応じて組み込みとして使用するこれらの関数を宣言できます。 先頭にアンダースコア () で宣言し関数名は#pragma 組み込み のステートメントに表示されることがあります。 コンパイラがパラメーターの型の不一致を検出できるようにこれらの関数を宣言することを強くお勧めします。
これらの関数は汎用的なビットの組み込みではありません。 これらの関数はビット アトミック操作の比較が必要な場合にのみ使用してください ; それ以外のパフォーマンスを向上させるために対応する 64 ビット バージョンを使用します。
_InterlockedCompare64Exchange128 の関数は Comperand の値と Destination の値の最下位の 64 ビットのアトミック比較を実行します。 Destination の値が Comperand の値と等しい場合Exchange のビットの値は Destination で指定したアドレスに格納されます。 それ以外の場合は、操作が実行されません。 コピー先のポインターはバイトでアライメントされたメモリ位置を示す必要があります。
_InterlockedCompare64Exchange128_acq の組み込み関数は _acq のサフィックスなしに対応する関数と同じですが演算はセマンティクスを取得します。
_InterlockedCompare64Exchange128_rel の組み込み関数は _rel のサフィックスなしに対応する関数と同じですが操作はリリースのセマンティクスに発生します。
x64 プラットフォームでは_acq と _rel の形式は _acq または _rel のサフィックスなしに対応する関数と同じです。 これらの形式はIPF のプラットフォームでソース・コードの互換性のためにサポートされます。
x64 プラットフォームは上で説明したビットの分割不可能な操作に対するハードウェア サポートしません。 組み込み関数ではセマンティクスをエミュレートするコードを生成します。
これらの関数は読み取り / 書き込みバリアとして機能します。 詳細については_ReadWriteBarrier を参照してください。
参照
Reference
_InterlockedCompareExchange の組み込み関数