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 參數所指向的初始位址。

備註

此函式會將傳遞為第二個參數的位址複製到第一個,並傳回第一個的原始位址。

在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

同步處理函式