Share via


InterlockedExchangePointer 関数 (winnt.h)

アドレスのペアをアトミックに交換します。

構文

PVOID InterlockedExchangePointer(
  [in, out] PVOID volatile *Target,
  [in]      PVOID          Value
);

パラメーター

[in, out] Target

交換するアドレスへのポインター。 この関数は、 Target パラメーター (*Target) が指すアドレスを Value パラメーターの値であるアドレスに設定し、 Target パラメーターの前の値を返します。

[in] Value

Target パラメーター (*Target) が指すアドレスと交換するアドレス。

戻り値

この関数は、 Target パラメーターが指す初期アドレスを返します。

注釈

この関数は、2 番目のパラメーターとして渡されたアドレスを最初の パラメーターにコピーし、最初の の元のアドレスを返します。

64 ビット システムでは、パラメーターは 64 ビットであり、 Target パラメーターは 64 ビット境界に配置する必要があります。それ以外の場合、関数は予期しない動作をします。 32 ビット システムでは、パラメーターは 32 ビットであり、 Target パラメーターは 32 ビット境界に配置する必要があります。

インターロックされた関数は、複数のスレッドによって共有される変数へのアクセスを同期するための簡単なメカニズムを提供します。 この関数は、他のインターロックされた関数の呼び出しに関してアトミックです。

この関数は、可能な場合はコンパイラ組み込みを使用して実装されます。 詳細については、WinBase.h ヘッダー ファイルと _InterlockedExchangePointerを参照してください。

この関数は、メモリ操作が順番に完了するように、完全なメモリ バリア (またはフェンス) を生成します。

Itanium ベースのシステム: パフォーマンスが重要なアプリケーションの場合は、代わりに InterlockedExchangePointerAcquire を 使用してください。

メモこの関数は、Windows RT ベースのシステムでサポートされています。
 

要件

要件
サポートされている最小のクライアント Windows XP [デスクトップ アプリ | UWP アプリ]
サポートされている最小のサーバー Windows Server 2003 [デスクトップ アプリのみ | UWP アプリ]
対象プラットフォーム Windows
ヘッダー winnt.h (Windows.h を含む)

こちらもご覧ください

インタロックされた変数アクセス

InterlockedCompareExchange

InterlockedExchange

InterlockedExchange16

InterlockedExchange16Acquire

InterlockedExchange16NoFence

InterlockedExchange64

InterlockedExchange8

InterlockedExchangeAcquire

InterlockedExchangeAcquire64

InterlockedExchangeAdd

InterlockedExchangeNoFence

InterlockedExchangeNoFence64

InterlockedExchangePointerAcquire

InterlockedExchangePointerNoFence

InterlockedExchangeSubtract

同期関数