Função MemoryBarrier (winnt.h)
Cria uma barreira de memória de hardware (cerca) que impede que a CPU reordene as operações de leitura e gravação. Ele também pode impedir que o compilador reordene as operações de leitura e gravação.
Sintaxe
void MemoryBarrier();
Retornar valor
Nenhum
Comentários
Use essa macro ou as funções interligadas quando a ordem das operações de leitura e gravação de memória for essencial para a operação do programa.
Os intrínsecos do compilador _ReadBarrier, _WriteBarrier e _ReadWriteBarrier impedem apenas a reordenação do compilador. Com o Visual Studio 2003, as referências voláteis a voláteis são ordenadas; o compilador não ordenará novamente o acesso à variável volátil . Com o Visual Studio 2005, o compilador também usa semântica de aquisição para operações de leitura em variáveis voláteis e semântica de versão para operações de gravação em variáveis voláteis (quando compatível com a CPU). Para obter mais informações, consulte Problemas de sincronização e multiprocessador.
Essa macro pode ser chamada em todas as plataformas de processador em que o Windows tem suporte, mas não tem efeito em algumas plataformas. A definição varia de plataforma para plataforma. Veja a seguir algumas definições dessa macro em 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 | Valor |
---|---|
Cliente mínimo com suporte | Windows Vista [aplicativos da área de trabalho | Aplicativos UWP] |
Servidor mínimo com suporte | Windows Server 2003 [aplicativos da área de trabalho | Aplicativos UWP] |
Plataforma de Destino | Windows |
Cabeçalho | winnt.h (inclua Windows.h) |