Interlocked.MemoryBarrierProcessWide Metoda

Definice

Poskytuje bariéru paměti pro celý proces, která zajišťuje, že čtení a zápisy z jakéhokoli procesoru se nemůže pohybovat 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, aby čtení a zápisy z aktuálního procesoru nemohly přecházet přes bariéru. Bariéra paměti na úrovni celého procesu zajišťuje, aby se všechny operace čtení nebo zápisu z jakéhokoli procesoru používaného v procesu nepřesunuly přes bariéru.

  • Normální paměťová bariéra umožňuje přiměřený sdílený přístup, pokud každé vlákno přistupující 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í paměti 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í přiměřený sdílený přístup.

  • Normální paměťová bariéra má velmi malou režii; normální vzájemně uzamčené 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 za pravděpodobné náklady na tisíce cyklů.

Metoda MemoryBarrierProcessWide také trpí všemi drobnými jemnostmi 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 na Windows a sys_membarrier v Linuxu.

Platí pro