interlockedExchangeAdd 函式 (winnt.h)
執行兩個32位值的不可部分完成新增。
若要在 64 位值上運作,請使用 InterlockedExchangeAdd64 函式。
語法
LONG InterlockedExchangeAdd(
[in, out] LONG volatile *Addend,
[in] LONG Value
);
參數
[in, out] Addend
變數的指標。 此變數的值將會取代為作業的結果。
[in] Value
要加入至 Addend 參數所指向之變數的值。
傳回值
函式會傳回 Addend 參數的初始值。
備註
函式會將 Value 的不可部分完成加入至 Addend 所指向的值。 結果會儲存在 Addend 所指定的位址中。 函式會傳回 Addend 所指向之變數的初始值。
此函式的變數必須對齊 32 位界限;否則,此函式會在多處理器 x86 系統和任何非 x86 系統上發生無法預期的行為。 請參閱 _aligned_malloc。
連結函式提供簡單的機制,可同步存取多個線程所共享的變數。 此函式與呼叫其他相互連結函式有關,是不可部分完成的。
此函式會盡可能使用編譯程式內部函數來實作。 如需詳細資訊,請參閱 WinBase.h 頭文件與 _InterlockedExchangeAdd
此函式會產生完整記憶體屏障 (或柵欄) ,以確保記憶體作業依序完成。
Itanium 型系統: 針對效能關鍵性應用程式,請改用 InterlockedExchangeAddAcquire 。
注意Windows RT 型系統上支援此函式。
規格需求
最低支援的用戶端 | Windows XP [傳統型應用程式 |UWP 應用程式] |
最低支援的伺服器 | Windows Server 2003 [傳統型應用程式 |UWP 應用程式] |
目標平台 | Windows |
標頭 | winnt.h (包括 Windows.h) |
程式庫 | Kernel32.lib |
DLL | Kernel32.dll |
另請參閱
InterlockedExchangeAddAcquire64
InterlockedExchangeAddNoFence64