次の方法で共有


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 アプリ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー winnt.h (Windows.h を含む)

関連項目

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

InterlockedCompareExchange の

InterlockedExchange の

InterlockedExchange16

InterlockedExchange16Acquire の

InterlockedExchange16NoFence

InterlockedExchange64 の

InterlockedExchange8

InterlockedExchangeAcquire の

InterlockedExchangeAcquire64 の

InterlockedExchangeAdd の

InterlockedExchangeNoFence

InterlockedExchangeNoFence64

InterlockedExchangePointerAcquire の

InterlockedExchangePointerNoFence の

InterlockedExchangeSubtract の

同期関数の