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 XP [デスクトップ アプリ | UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2003 [デスクトップ アプリのみ | UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | winnt.h (Windows.h を含む) |
こちらもご覧ください
InterlockedExchangePointerAcquire
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示