分享方式:


_InterlockedIncrement 內建函式

提供 Win32 Windows SDK InterlockedIncrement 函式的編譯器內建支援。 內部 _InterlockedIncrement 函數是 Microsoft 特有的

語法

long _InterlockedIncrement(
   long volatile * lpAddend
);
long _InterlockedIncrement_acq(
   long volatile * lpAddend
);
long _InterlockedIncrement_rel(
   long volatile * lpAddend
);
long _InterlockedIncrement_nf(
   long volatile * lpAddend
);
short _InterlockedIncrement16(
   short volatile * lpAddend
);
short _InterlockedIncrement16_acq(
   short volatile * lpAddend
);
short _InterlockedIncrement16_rel(
   short volatile * lpAddend
);
short _InterlockedIncrement16_nf (
   short volatile * lpAddend
);
__int64 _InterlockedIncrement64(
   __int64 volatile * lpAddend
);
__int64 _InterlockedIncrement64_acq(
   __int64 volatile * lpAddend
);
__int64 _InterlockedIncrement64_rel(
   __int64 volatile * lpAddend
);
__int64 _InterlockedIncrement64_nf(
   __int64 volatile * lpAddend
);

參數

lpAddend
[in, out]要遞增之變數的指標。

傳回值

傳回值是所產生的遞增值。

需求

內建 架構 標題
_InterlockedIncrement, _InterlockedIncrement16 x86、ARM、x64、ARM64 <intrin.h>
_InterlockedIncrement64 ARM、x64、ARM64 <intrin.h>
_InterlockedIncrement_acq, _InterlockedIncrement_rel, _InterlockedIncrement_nf, _InterlockedIncrement16_acq, _InterlockedIncrement16_rel, _InterlockedIncrement16_nf, _InterlockedIncrement64_acq, _InterlockedIncrement64_rel, _InterlockedIncrement64_nf ARM、ARM64 <intrin.h>

備註

_InterlockedIncrement 上有數個變化,會因所涉及的資料類型,以及是否使用處理器專用的取得或釋放語意,而有所不同。

_InterlockedIncrement 函式在 32 位元整數值上操作,而 _InterlockedIncrement16 是在 16 位元整數值上操作,_InterlockedIncrement64 在 64 位元整數值上操作。

在 ARM 平台上,如果您需要取得並發行語意 (例如在關鍵區段的開頭和結尾),請使用具有 _acq_rel 後置字元的內建函式。 內建具有 _nf (「無柵欄」) 尾碼,不會做為記憶體屏障。

lpAddend 參數所指向的變數必須對齊 32 位元界限;否則,這個函式會在多處理器 x86 系統與任何非 x86 系統上失敗。 如需詳細資訊,請參閱 對齊

Win32 函式在 Wdm.hNtddk.h 中宣告。

這些常式僅以內建函式的形式供您使用。

範例

如需如何使用 _InterlockedIncrement 的範例,請參閱 _InterlockedDecrement

另請參閱

編譯器內建函式
關鍵字
與 x86 編譯器衝突