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 que garantiza que las lecturas y escrituras de cualquier CPU no se puedan mover a través de 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 como se indica a continuación:
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 de 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 de 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 de todo el proceso es muy costosa. Tiene que forzar que cada CPU del proceso haga 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 extremadamente útil cuando realmente necesita llamarlo, que debe ser poco frecuente.
Este método encapsula una llamada a FlushProcessWriteBuffers en Windows y sys_membarrier en Linux.