Interlocked.MemoryBarrierProcessWide 方法

定義

提供整個處理序範圍的記憶體屏障,以確保來自任何 CPU 的讀取和寫入都無法穿越屏障。

public:
 static void MemoryBarrierProcessWide();
public static void MemoryBarrierProcessWide ();
static member MemoryBarrierProcessWide : unit -> unit
Public Shared Sub MemoryBarrierProcessWide ()

備註

方法 MemoryBarrierProcessWide 與「一般」 MemoryBarrier 方法不同,如下所示:

  • 一般記憶體屏障可確保從目前的 CPU 讀取和寫入無法跨屏障移動。 全進程記憶體屏障可確保進程中使用的任何 CPU 的任何讀取或寫入都無法跨越屏障。

  • 如果 存取資料的每個 執行緒都使用屏障,則一般記憶體屏障允許合理的共用存取。 整個進程記憶體屏障會強制 其他 CPU 與進程記憶體 (同步處理,例如排清寫入緩衝區,以及同步處理讀取緩衝區) 。 這允許某些執行緒上的非連結作業,但仍有合理的共用存取權。

  • 一般記憶體屏障會造成非常少的額外負荷;一般連結作業的成本可能少於一百個週期。 全進程記憶體屏障成本很高。 它必須強制進程中的每個 CPU 對某個專案執行動作,其成本可能是數千個週期。

方法 MemoryBarrierProcessWide 也會受到無鎖定程式設計的所有細微影響。 不過,當您實際需要呼叫此方法時,此方法可能非常實用,這應該很罕見。

此方法會在 Windows 上包裝 FlushProcessWriteBuffers 的呼叫,並在 Linux 上 sys_membarrier

適用於