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 應用程式] |
目標平臺 | 窗戶 |
標頭 | winnt.h (包括 Windows.h) |
另請參閱
InterlockedExchangePointerAcquire