Compartilhar via


Interlocked.MemoryBarrierProcessWide Método

Definição

Fornece uma barreira de memória em todo o processo, que garante que leituras e gravações de qualquer CPU não possam se mover pela barreira.

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

Comentários

O MemoryBarrierProcessWide método difere do método "normal" MemoryBarrier da seguinte maneira:

  • A barreira de memória normal garante que as leituras e gravações da CPU atual não possam se mover pela barreira. A barreira de memória em todo o processo garante que qualquer leitura ou gravação de qualquer CPU usada no processo não possa se mover pela barreira.

  • A barreira de memória normal permite acesso compartilhado razoável se cada thread que acessa os dados usar barreiras. A barreira de memória em todo o processo força outras CPUs a sincronizar com a memória do processo (por exemplo, para liberar buffers de gravação e sincronizar buffers de leitura). Isso permite operações não interligadas em alguns threads e ainda tem acesso compartilhado razoável.

  • A barreira de memória normal impõe muito pouca sobrecarga; as operações intertravadas normais provavelmente custam menos de cem ciclos. A barreira de memória em todo o processo é muito cara. Ele tem que forçar cada CPU no processo a fazer algo, a um custo provável de milhares de ciclos.

O MemoryBarrierProcessWide método também sofre de todas as sutilezas da programação sem bloqueio. No entanto, esse método pode ser extremamente útil quando você realmente precisa chamá-lo, o que deve ser raro.

Esse método encapsula uma chamada para FlushProcessWriteBuffers no Windows e sys_membarrier no Linux.

Aplica-se a