Interlocked.MemoryBarrierProcessWide Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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.