Interlocked.MemoryBarrierProcessWide Método

Definición

Proporciona una barrera de memoria para todo el proceso con el fin de asegurar que las operaciones de lectura y escritura desde cualquier CPU no puedan superar la barrera.

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

Comentarios

El MemoryBarrierProcessWide método difiere del método "normal" MemoryBarrier de la siguiente manera:

  • La barrera de memoria normal garantiza que las lecturas y escrituras de la CPU actual no se puedan mover a través de la barrera. La barrera de memoria para todo el proceso garantiza que cualquier lectura o escritura de cualquier CPU que se use en el proceso no pueda moverse a través de la barrera.

  • La barrera de memoria normal permite un acceso compartido razonable si cada subproceso que accede a los datos usa barreras. La barrera de memoria para todo el proceso obliga a otras CPU a sincronizarse con la memoria del proceso (por ejemplo, para vaciar los búferes de escritura y sincronizar los búferes de lectura). Esto permite operaciones no interbloqueadas en algunos subprocesos y sigue teniendo acceso compartido razonable.

  • La barrera de memoria normal impone muy poca sobrecarga; las operaciones normales interbloqueadas probablemente cuestan menos de cien ciclos. La barrera de memoria para todo el proceso es muy costosa. Tiene que forzar cada CPU del proceso a hacer algo, a un costo probable de miles de ciclos.

El MemoryBarrierProcessWide método también sufre de todas las sutilezas de la programación sin bloqueos. Sin embargo, este método puede ser muy útil cuando realmente necesita llamarlo, que debería ser poco frecuente.

Este método encapsula una llamada a FlushProcessWriteBuffers en Windows y sys_membarrier en Linux.

Se aplica a