Interlocked.MemoryBarrierProcessWide Methode

Definitie

Biedt een procesbrede geheugenbarrière die ervoor zorgt dat lees- en schrijfbewerkingen van cpu's niet over de barrière kunnen lopen.

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

Opmerkingen

De MemoryBarrierProcessWide methode verschilt als volgt van de 'normale' MemoryBarrier methode:

  • De normale geheugenbarrière zorgt ervoor dat de lees- en schrijfbewerkingen van de huidige CPU niet over de barrière kunnen lopen. De geheugenbarrière voor het hele proces zorgt ervoor dat elke lees- of schrijfbewerking van een CPU die in het proces wordt gebruikt, niet over de barrière kan lopen.

  • De normale geheugenbarrière biedt redelijke gedeelde toegang als elke thread die toegang heeft tot de gegevens barrières gebruikt. De geheugenbarrière voor het hele proces dwingt andere CPU's om te synchroniseren met procesgeheugen (bijvoorbeeld om schrijfbuffers leeg te maken en leesbuffers te synchroniseren). Dit maakt niet-vergrendelde bewerkingen mogelijk voor bepaalde threads en hebben nog steeds redelijke gedeelde toegang.

  • De normale geheugenbarrière legt zeer weinig overhead op; normale interlocked bewerkingen kosten waarschijnlijk minder dan honderd cycli. De procesbrede geheugenbarrière is erg duur. Het moet elke CPU in het proces dwingen om iets te doen, tegen een waarschijnlijke kosten van duizenden cycli.

De MemoryBarrierProcessWide methode lijdt ook aan alle subtiliteiten van vergrendelingsvrije programmering. Deze methode kan echter zeer nuttig zijn wanneer u deze eigenlijk moet aanroepen, wat zeldzaam moet zijn.

Deze methode verpakt een aanroep naar FlushProcessWriteBuffers op Windows en sys_membarrier op Linux.

Van toepassing op