Interlocked.MemoryBarrierProcessWide Metoda

Definice

Poskytuje bariéru paměti pro celý proces, která zajišťuje, že čtení a zápisy z jakéhokoli procesoru nemůže přecházet přes bariéru.

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

Poznámky

Metoda MemoryBarrierProcessWide se liší od "normální" MemoryBarrier metody následujícím způsobem:

  • Normální paměťová bariéra zajišťuje, že čtení a zápisy z aktuálního procesoru nemohou přecházet přes bariéru. Bariéra paměti na úrovni celého procesu zajišťuje, aby se všechny čtení nebo zápisy z jakéhokoli procesoru používaného v procesu nemohly pohybovat přes bariéru.

  • Normální paměťová bariéra umožňuje přiměřený sdílený přístup, pokud každé vlákno, které přistupuje k datům, využívá bariéry. Bariéra paměti pro celý proces vynutí synchronizaci jiných procesorů s pamětí procesu (například pro vyprázdnění vyrovnávacích pamětí zápisu a synchronizaci vyrovnávacích pamětí pro čtení). To umožňuje neblokované operace na některých vláknech a stále mají rozumný sdílený přístup.

  • Normální paměťová bariéra má velmi malou režii; normální vzájemně propojené operace pravděpodobně stojí méně než sto cyklů. Bariéra paměti pro celý proces je velmi náročná. Musí vynutit, aby každý procesor v procesu něco udělal, s pravděpodobnými náklady na tisíce cyklů.

Metoda MemoryBarrierProcessWide také trpí všemi drobnými detaily programování bez uzamčení. Nicméně tato metoda může být velmi užitečná, když skutečně potřebujete volat, což by mělo být vzácné.

Tato metoda zabalí volání FlushProcessWriteBuffers ve Windows a sys_membarrier v Linuxu.

Platí pro