次の方法で共有


_InterlockedCompareExchangePointer 組み込み関数

Microsoft 固有の仕様

ExchangeDestination アドレスが等しい場合、Comparand アドレスに Destination アドレスを格納するアトミックな演算を実行します。

構文

void * _InterlockedCompareExchangePointer (
   void * volatile * Destination,
   void * Exchange,
   void * Comparand
);
void * _InterlockedCompareExchangePointer_acq (
   void * volatile * Destination,
   void * Exchange,
   void * Comparand
);
void * _InterlockedCompareExchangePointer_HLEAcquire (
   void * volatile * Destination,
   void * Exchange,
   void * Comparand
);
void * _InterlockedCompareExchangePointer_HLERelease (
   void * volatile * Destination,
   void * Exchange,
   void * Comparand
);
void * _InterlockedCompareExchangePointer_nf (
   void * volatile * Destination,
   void * Exchange,
   void * Comparand
);
void * _InterlockedCompareExchangePointer_np (
   void * volatile * Destination,
   void * Exchange,
   void * Comparand
);
void * _InterlockedCompareExchangePointer_rel (
   void * volatile * Destination,
   void * Exchange,
   void * Comparand
);

パラメーター

宛先
[in、out] 対象値へのポインターへのポインター。 符号は無視されます。

Exchange
[in] Exchange へのポインター。 符号は無視されます。

比較対照値
[in] 対象と比較するポインター。 符号は無視されます。

戻り値

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

要件

Intrinsic Architecture ヘッダー
_InterlockedCompareExchangePointer x86、ARM、x64、ARM64 <intrin.h>
_InterlockedCompareExchangePointer_acq_InterlockedCompareExchangePointer_nf_InterlockedCompareExchangePointer_rel ARM、ARM64 <iiintrin.h>
_InterlockedCompareExchangePointer_HLEAcquire, _InterlockedCompareExchangePointer_HLERelease x86、x64 <immintrin.h>

解説

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

_InterlockedCompareExchangePointer は、Win32 Windows SDK InterlockedCompareExchangePointer 関数のコンパイラ固有のサポートを提供します。

_InterlockedCompareExchangePointer の使用例は、_InterlockedDecrement を参照してください。

ARM プラットフォームでは、クリティカル セクションの最初と最後などで取得と解放のセマンティクスを必要とする場合は、_acq および _rel サフィックスの付いた組み込みを使用します。 ARM の組込み関数で _nf ("no fence") のサフィックスを持つものは、メモリ バリアとして機能しません。

組み込みに _np ("プリフェッチなし") サフィックスが付いていると、コンパイラによってプリフェッチ操作が挿入される可能性がなくなります。

Hardware Lock Elision (HLE) 命令をサポートする Intel プラットフォームでは、_HLEAcquire および _HLERelease サフィックスの付いた組み込みにプロセッサへのヒントが含まれています。このヒントによりハードウェアでのロック書き込み手順を省くことで、パフォーマンスを向上させることができます。 HLE をサポートしていないプラットフォームでこれらの組み込みが呼び出された場合、ヒントは無視されます。

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

Microsoft 固有の仕様はここまで

関連項目

コンパイラの組み込み
キーワード