Interlocked.MemoryBarrierProcessWide Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Zapewnia barierę pamięci dla całego procesu, która gwarantuje, że odczyty i zapisy z dowolnego procesora CPU nie mogą poruszać się po barierze.
public:
static void MemoryBarrierProcessWide();
public static void MemoryBarrierProcessWide ();
static member MemoryBarrierProcessWide : unit -> unit
Public Shared Sub MemoryBarrierProcessWide ()
Uwagi
Metoda MemoryBarrierProcessWide
różni się od metody "normal" MemoryBarrier w następujący sposób:
Normalna bariera pamięci gwarantuje, że operacje odczytu i zapisu z bieżącego procesora CPU nie będą mogły poruszać się po barierze. Bariera pamięci dla całego procesu gwarantuje, że każdy odczyt lub zapis z jakiegokolwiek procesora CPU używanego w procesie nie będzie mógł przechodzić przez barierę.
Normalna bariera pamięci umożliwia rozsądny dostęp współużytkowany, jeśli każdy wątek, który uzyskuje dostęp do danych, używa barier. Bariera pamięci dla całego procesu wymusza synchronizację innych procesorów z pamięcią procesu (na przykład opróżnianie buforów zapisu i synchronizowanie buforów odczytu). Umożliwia to wykonywanie operacji bez blokady w niektórych wątkach i nadal ma rozsądny dostęp współużytkowany.
Normalna bariera pamięci nakłada bardzo niewielkie obciążenie; normalne operacje połączone prawdopodobnie kosztują mniej niż sto cykli. Bariera pamięci dla całego procesu jest bardzo kosztowna. Musi wymusić wykonywanie każdego procesora CPU w procesie, przy prawdopodobnym koszcie tysięcy cykli.
Metoda MemoryBarrierProcessWide
cierpi również na wszystkie subtelności programowania bez blokady. Niemniej jednak ta metoda może być bardzo przydatna, gdy trzeba ją wywołać, co powinno być rzadkie.
Ta metoda opakowuje wywołanie funkcji FlushProcessWriteBuffers w systemie Windows i sys_membarrier w systemie Linux.