Compartir a través de


Función MemoryBarrier (winnt.h)

Crea una barrera de memoria de hardware (barrera) que impide que la CPU vuelva a ordenar las operaciones de lectura y escritura. También puede impedir que el compilador vuelva a ordenar las operaciones de lectura y escritura.

Sintaxis

void MemoryBarrier();

Valor devuelto

None

Observaciones

Use esta macro o las funciones interbloqueadas cuando el orden de las operaciones de lectura y escritura de memoria sea fundamental para la operación del programa.

Los _ReadBarrier, _WriteBarrier y _ReadWriteBarrier intrínsecos del compilador impiden que el compilador vuelva a ordenarlo. Con Visual Studio 2003, se ordenan las referencias volátiles a volátiles ; el compilador no volverá a ordenar el acceso a variables volátiles . Con Visual Studio 2005, el compilador también usa la semántica de adquisición para las operaciones de lectura en variables volátiles y semántica de versión para las operaciones de escritura en variables volátiles (cuando sea compatible con la CPU). Para obtener más información, vea Problemas de sincronización y multiprocesador.

Se puede llamar a esta macro en todas las plataformas de procesador en las que se admite Windows, pero no tiene ningún efecto en algunas plataformas. La definición varía de plataforma a plataforma. A continuación se muestran algunas definiciones de esta macro en Winnt.h.


#ifdef _AMD64_
#define MemoryBarrier __faststorefence
#endif

#ifdef _IA64_
#define MemoryBarrier __mf
#endif

// x86

FORCEINLINE
VOID
MemoryBarrier (
    VOID
    )
{
    LONG Barrier;
    __asm {
        xchg Barrier, eax
    }
}

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista [aplicaciones de escritorio | aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2003 [aplicaciones de escritorio | aplicaciones para UWP]
Plataforma de destino Windows
Encabezado winnt.h (incluye Windows.h)

Consulte también

Acceso a variables interbloqueadas