Função InterlockedCompareExchange (miniport.h)
A rotina InterlockedCompareExchange executa uma operação atômica que compara o valor de entrada apontado por Destination com o valor de Comparand.
Sintaxe
LONG InterlockedCompareExchange(
[in, out] LONG volatile *Destination,
LONG ExChange,
LONG Comperand
);
Parâmetros
[in, out] Destination
Um ponteiro para o valor de entrada que é comparado com o valor de Comparand.
ExChange
Especifica o valor de saída apontado por Destination se o valor de entrada apontado por Destination for igual ao valor de Comparand.
Comperand
Especifica o valor que é comparado com o valor de entrada apontado por Destination.
Retornar valor
InterlockedCompareExchange retorna o valor original de *Destination.
Comentários
Se Comparand for igual a *Destination, *Destination será definido como igual ao Exchange. Caso contrário, *O destino não será alterado.
InterlockedCompareExchange fornece uma maneira rápida e atômica de sincronizar o teste e a atualização de uma variável que é compartilhada por vários threads. Se o valor de entrada apontado por Destination for igual ao valor de Comparand, o valor de saída de Destination será definido como o valor do Exchange.
InterlockedCompareExchange foi projetado para velocidade e, normalmente, é implementado embutido por um compilador. InterlockedCompareExchange é atômico apenas em relação a outras chamadasXxx interlocked. Ele não usa um bloqueio de rotação e pode ser usado com segurança em dados pagináveis.
As operações interligadas não podem ser usadas na memória não armazenada em cache.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Disponível a partir do Windows 2000. |
Plataforma de Destino | Universal |
Cabeçalho | miniport.h (incluem Wdm.h, Ntddk.h, Ntifs.h, Miniport.h) |
Biblioteca | OneCoreUAP.lib no Windows 10 |
IRQL | Qualquer nível |
Confira também
ExInterlockedCompareExchange64