_InterlockedCompareExchangePointer の組み込み関数

[このドキュメントはプレビュー版であり、後のリリースで変更されることがあります。 Blank topics are included as placeholders.]

Microsoft 固有の仕様 →

Win32 Windows SDK の _InterlockedCompareExchangePointer の関数にはコンパイラの組み込みサポートが用意されています。

void * _InterlockedCompareExchangePointer (
   void * volatile * Destination,
   void * Exchange,
   void * Comperand
);
void * _InterlockedCompareExchangePointer_acq (
   void * volatile * Destination,
   void * Exchange,
   void * Comperand
);
long _InterlockedCompareExchangePointer_rel (
   void * volatile * Destination,
   void * Exchange,
   void * Comperand
);

パラメーター

  • [入力、出力] Destination
    終了値へのポインターへのポインター。 記号は無視されます。

  • [入力] Exchange
    交換ポインター。 記号は無視されます。

  • [入力] Comperand
    ターゲットと比較するポインター。 記号は無視されます。

戻り値

戻り値は対象の初期値です。

必要条件

組み込み

アーキテクチャ

_InterlockedCompareExchangePointer

x86IPFx64

_InterlockedCompareExchangePointer_acq

IPF

_InterlockedCompareExchangePointer_rel

IPF

ヘッダー ファイル <intrin.h>

解説

組み込みの配置生成するには/Oi を使用する必要があることに注意してください。 /Oi/O2 と暗黙的に指定されます。

組み込みとして使用するためにインタロック関数の 1 種類を宣言するには先頭にアンダースコア () として宣言されて新しい関数は #pragma 組み込み のステートメントで使用する必要があります。 便宜上関数の基本的なバージョンでは #define のステートメントの先頭にアンダースコア () を使用せずにソース・コードに表示されるように宣言できます。

_InterlockedCompareExchangePointer は Comperand アドレスの Destination のアドレスのアトミック比較を実行します。 Destination のアドレスが Comperand のアドレスと等しい場合Exchange のアドレスは Destination で指定したアドレスに格納されます。 それ以外の場合は、操作が実行されません。

_InterlockedCompareExchangePointer を使用する方法の例については _InterlockedDecrement を参照してください。

_InterlockedCompareExchangePointer_acq の組み込み関数は acq のサフィックスなしに対応する関数と同じですが操作と取得に役立つセマンティクスの実行クリティカル セクションに入るとき。

_InterlockedCompareExchangePointer_rel の組み込み関数は rel のサフィックスなしに対応する関数と同じですが操作と便利なリリース セマンティクスと実行されます。クリティカル セクションを離れる場合。

これらの関数は読み書き可能メモリ バリアとして機能します。 詳細については_ReadWriteBarrier を参照してください。

これらのルーチンは組み込みとしてのみ使用できます。

参照

Reference

コンパイラ組み込み関数。

C++ キーワード