Interlocked.MemoryBarrierProcessWide Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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.