Interlocked.MemoryBarrierProcessWide Método

Definição

Fornece uma barreira de memória em todo o processo que garante que as leituras e escritas de qualquer CPU não possam atravessar essa barreira.

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

Observações

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

  • A barreira de memória normal garante que as leituras e escritas da CPU atual não conseguem atravessar a barreira. A barreira de memória em todo o processo assegura que qualquer leitura ou escrita de qualquer CPU utilizada no processo não possa atravessar a barreira.

  • A barreira de memória normal permite um acesso partilhado razoável se cada thread que acede aos dados usar barreiras. A barreira de memória em todo o processo obriga outros CPUs a sincronizarem-se com a memória do processo (por exemplo, para limpar buffers de escrita e sincronizar buffers de leitura). Isto permite operações não interligadas em alguns threads e ainda assim ter acesso partilhado razoável.

  • A barreira de memória normal impõe muito pouca sobrecarga; Operações interligadas normais provavelmente custavam menos de cem ciclos. A barreira de memória em todo o processo é muito cara. Tem de forçar todos os CPUs no processo a fazer algo, a um custo provável de milhares de ciclos.

O MemoryBarrierProcessWide método também sofre de todas as subtilezas da programação sem bloqueios. No entanto, este método pode ser extremamente útil quando realmente precisa de o pedir, o que deve ser raro.

Este método envolve uma chamada para FlushProcessWriteBuffers no Windows e sys_membarrier no Linux.

Aplica-se a