_InterlockedCompareExchangePointer內部函數
Microsoft 特定的
如果 Exchange
與 Destination
相等,則執行不可部分完成作業,可將 Comparand
位址儲存在 Destination
位址中。
語法
void * _InterlockedCompareExchangePointer (
void * volatile * Destination,
void * Exchange,
void * Comparand
);
void * _InterlockedCompareExchangePointer_acq (
void * volatile * Destination,
void * Exchange,
void * Comparand
);
void * _InterlockedCompareExchangePointer_HLEAcquire (
void * volatile * Destination,
void * Exchange,
void * Comparand
);
void * _InterlockedCompareExchangePointer_HLERelease (
void * volatile * Destination,
void * Exchange,
void * Comparand
);
void * _InterlockedCompareExchangePointer_nf (
void * volatile * Destination,
void * Exchange,
void * Comparand
);
void * _InterlockedCompareExchangePointer_np (
void * volatile * Destination,
void * Exchange,
void * Comparand
);
void * _InterlockedCompareExchangePointer_rel (
void * volatile * Destination,
void * Exchange,
void * Comparand
);
參數
目的地
[in, out]指向目的地值的指標。 會忽略正負號。
Exchange
[in]Exchange 指標。 會忽略正負號。
Comparand
[in]要與目的地比較的指標。 會忽略正負號。
傳回值
傳回值是目的地的初始值。
需求
內建 | 架構 | 頁首 |
---|---|---|
_InterlockedCompareExchangePointer |
x86、ARM、x64、ARM64 | <intrin.h> |
_InterlockedCompareExchangePointer_acq 、 、 _InterlockedCompareExchangePointer_nf _InterlockedCompareExchangePointer_rel |
ARM、ARM64 | <iiintrin.h> |
_InterlockedCompareExchangePointer_HLEAcquire , _InterlockedCompareExchangePointer_HLERelease |
x86、x64 | <immintrin.h> |
備註
_InterlockedCompareExchangePointer
執行 Destination
位址與Comparand
位址的不可部分完成比較。 如果 Destination
位址等於 Comparand
位址,Exchange
位址會儲存在 Destination
所指定的位址中。 否則,不會執行任何作業。
_InterlockedCompareExchangePointer
提供 Win32 Windows SDK InterlockedCompareExchangePointer 函式的編譯程式內建支援。
如需如何使用 _InterlockedCompareExchangePointer
的範例,請參閱 _InterlockedDecrement。
在 ARM 平台上,如果您需要取得並發行語意 (例如在關鍵區段的開頭和結尾),請使用具有 _acq
和 _rel
後置字元的內建函式。 具有 (“無柵欄”) 後綴的 _nf
ARM 內部函數不會作為記憶體屏障。
搭配 _np
(「不預先擷取」) 字尾使用內建函式,可避免編譯器插入可能的預先提取作業。
在支援 Hardware Lock Elision (HLE) 指令的 Intel 平台上,搭配 _HLEAcquire
和 _HLERelease
字尾的內建函式會包含對處理器的提示,提示其可以藉由消除硬體中鎖定寫入 (lock write) 的階段以加速效能。 如果在不支援 HLE 的平臺上呼叫這些內部函數,則會忽略提示。
這些常式僅以內建函式的形式供您使用。
END Microsoft 特定的