memoryBarrier 函式 (winnt.h)
建立硬體記憶體屏障 (柵欄) ,以防止 CPU 重新排序讀取和寫入作業。 它也可能防止編譯程式重新排序讀取和寫入作業。
Syntax
void MemoryBarrier();
傳回值
無
備註
當記憶體讀取和寫入作業的順序對程序作業而言很重要時,請使用此宏或相互連結函式。
_ReadBarrier、_WriteBarrier和_ReadWriteBarrier編譯程序內部函數只會防止編譯程式重新排序。 使用 Visual Studio 2003 時, 會 排序 變動 性參考;編譯程式不會重新排序 變動性 變數存取。 使用 Visual Studio 2005 時,編譯程式也會使用取得語意進行 動態 變數的讀取作業,並在 CPU) 支援時,針對 變動 性變數的寫入作業發行語意 (。 如需詳細資訊,請參閱 同步處理和多處理器問題。
此宏可以在支援 Windows 的所有處理器平臺上呼叫,但對某些平台沒有任何影響。 定義會因平台而異。 以下是 Winnt.h 中此宏的一些定義。
#ifdef _AMD64_
#define MemoryBarrier __faststorefence
#endif
#ifdef _IA64_
#define MemoryBarrier __mf
#endif
// x86
FORCEINLINE
VOID
MemoryBarrier (
VOID
)
{
LONG Barrier;
__asm {
xchg Barrier, eax
}
}
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows Vista [傳統型應用程式 |UWP 應用程式] |
最低支援的伺服器 | Windows Server 2003 [傳統型應用程式 |UWP 應用程式] |
目標平台 | Windows |
標頭 | winnt.h (包括 Windows.h) |