大型函數系列採用應使用互鎖處理器指令存取的變數位址作為其參數之一。 這些是快取讀取通透式原子指令,如果運算元使用不正確,則會產生非常微妙的錯誤。
使用函數參數的下列註釋,將其識別為互鎖運算元。
| 互鎖運算元註釋 | 說明 |
|---|---|
| _Interlocked_operand_ | 註釋函數參數是其中一個互鎖函數的目標運算元。 這些運算元必須具有特定的其他屬性。 |
以_Interlocked_operand_註釋的函數參數應在進程之間共用。 與此註釋一起使用的變數必須:
被宣佈為 不穩定。
不是局部變數。 使用局部變數通常表示對函數意圖的誤解。 即使區域變數以某種方式被共用,系統分頁需求也會使在另一個處理程序中存取變數變得困難。
除非透過互鎖函數才能存取。 如果沒有明確使用互鎖功能,作業可能會存取過時的資料、可能只發生在單一處理器的快取中,或可能會延遲到達系統的其餘部分。
系統提供的函數已針對互鎖運算元進行註釋。
下列範例顯示 InterlockedExchange 函式的註解。 此註釋指定必須一律使用互鎖作業來存取 Target 參數。
LONG
InterlockedExchange (
_Inout_ _Interlocked_operand_ LONG volatile *Target,
_In_ LONG Value
);