Compartir a través de


Función InterlockedCompareExchange (wdm.h)

La rutina interlockedCompareExchange realiza una operación atómica que compara el valor de entrada al que apunta Destination con el valor de Comperand.

Sintaxis

LONG CDECL_NON_WVMPURE InterlockedCompareExchange(
  [in, out] LONG volatile *Destination,
  [in]      LONG          ExChange,
  [in]      LONG          Comperand
);

Parámetros

[in, out] Destination

Puntero al valor de entrada que se compara con el valor de Comperand.

[in] ExChange

Especifica el valor de salida al que apunta Destino si el valor de entrada al que apunta Destination es igual al valor de Comperand.

[in] Comperand

Especifica el valor que se compara con el valor de entrada al que apunta Destino.

Valor devuelto

interlockedCompareExchange devuelve el valor original de *Destination.

Observaciones

Si Comperand es igual a *Destino, * destination se establece en igual Exchange. De lo contrario, * de destino no cambia.

interlockedCompareExchange proporciona una manera rápida y atómica de sincronizar las pruebas y la actualización de una variable compartida por varios subprocesos. Si el valor de entrada al que apunta Destination es igual al valor de Comperand, el valor de salida de Destination se establece en el valor de Exchange.

interlockedCompareExchange está diseñado para velocidad y, normalmente, un compilador implementa en línea. InterlockedCompareExchange es atómica solo con respecto a otras llamadas de interbloqueadasXxx. No usa un bloqueo de número y se puede usar de forma segura en datos paginables.

Las operaciones interbloqueadas no se pueden usar en memoria no almacenada en caché.

Requisitos

Requisito Valor
cliente mínimo admitido Disponible a partir de Windows 2000.
de la plataforma de destino de Universal
encabezado de wdm.h (include Wdm.h, Ntddk.h, Ntifs.h, Miniport.h)
biblioteca de OneCoreUAP.lib en Windows 10
irQL Cualquier nivel

Consulte también

ExInterlockedCompareExchange64

InterlockedCompareExchangePointer

InterlockedDecrement

interlockedExchange

InterlockedExchangePointer

InterlockedIncrement