interlockedCompareExchange 函式 (wdm.h)

InterlockedCompareExchange 例程會執行不可部分完成的作業,以比較 Destination 所指向的輸入值與 Comperand 的值。

語法

LONG CDECL_NON_WVMPURE InterlockedCompareExchange(
  [in, out] LONG volatile *Destination,
  [in]      LONG          ExChange,
  [in]      LONG          Comperand
);

參數

[in, out] Destination

Comperand 值相比較之輸入值的指標。

[in] ExChange

如果 Destination 所指向的輸入值等於 Comperand 的值,則指定 Destination 所指向的輸出值。

[in] Comperand

指定與 Destination 所指向之輸入值比較的值。

傳回值

InterlockedCompareExchange 會傳回 *Destination 的原始值。

備註

如果 Comperand 等於 *Destination,則 *Destination 設定為等於 Exchange。 否則,*目的地 不會變更。

InterlockedCompareExchange 提供快速、不可部分完成的方式,可同步處理多個線程所共用之變數的測試與更新。 如果 Destination 所指向的輸入值等於 Comperand 的值, Destination 的輸出值會設定為 Exchange 的值。

InterlockedCompareExchange 是專為速度而設計,而且通常是由編譯程式內嵌實作。 InterlockedCompareExchange 只有在其他 InterlockedXxx 呼叫方面才不可部分完成。 它不會使用微調鎖定,而且可以在可分頁的數據上安全地使用。

無法對非快取記憶體使用連結的作業。

規格需求

需求
最低支援的用戶端 從 Windows 2000 開始提供。
目標平台 Universal
標頭 wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h、Miniport.h)
程式庫 Windows 10 上的 OneCoreUAP.lib
IRQL 任何層級

另請參閱

ExInterlockedCompareExchange64

InterlockedCompareExchangePointer

InterlockedDecrement

InterlockedExchange

InterlockedExchangePointer

InterlockedIncrement