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