Función InterlockedCompareExchangePointer (winnt.h)

Realiza una operación atómica de comparación e intercambio en los valores especificados. La función compara dos valores de puntero especificados e intercambia con otro valor de puntero en función del resultado de la comparación.

Para operar en valores que no son de puntero, use la función InterlockedCompareExchange .

Sintaxis

PVOID InterlockedCompareExchangePointer(
  [in, out] PVOID volatile *Destination,
  [in]      PVOID          Exchange,
  [in]      PVOID          Comperand
);

Parámetros

[in, out] Destination

Puntero a un puntero al valor de destino.

[in] Exchange

Valor de intercambio.

[in] Comperand

Valor que se va a comparar con Destination.

Valor devuelto

La función devuelve el valor inicial del parámetro Destination .

Comentarios

La función compara el valor destination con el valor Comparand . Si el valor destino es igual al valor de Comparand , el valor de Exchange se almacena en la dirección especificada por Destination. De lo contrario, no se realiza ninguna operación.

En un sistema de 64 bits, los parámetros son de 64 bits y deben alinearse en límites de 64 bits; de lo contrario, la función se comportará de forma impredecible. En un sistema de 32 bits, los parámetros son de 32 bits y deben estar alineados en límites de 32 bits.

Las funciones interbloqueadas proporcionan un mecanismo sencillo para sincronizar el acceso a una variable compartida por varios subprocesos. Esta función es atómica con respecto a las llamadas a otras funciones interbloqueadas.

Esta función se implementa mediante un intrínseco del compilador siempre que sea posible. Para obtener más información, vea el archivo de encabezado WinBase.h y _InterlockedCompareExchangePointer.

Esta función genera una barrera de memoria completa (o barrera) para asegurarse de que las operaciones de memoria se completan en orden.

Sistemas basados en Itanium: Para las aplicaciones críticas para el rendimiento, use InterlockedCompareExchangePointerAcquire o InterlockedCompareExchangePointerRelease en su lugar.

Nota Esta función se admite en sistemas basados en Windows RT.
 

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP [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

InterlockedCompare64Exchange128

InterlockedCompareExchange

InterlockedCompareExchange128

InterlockedCompareExchange16

InterlockedCompareExchange16Acquire

InterlockedCompareExchange16NoFence

InterlockedCompareExchange16Release

InterlockedCompareExchange64

InterlockedCompareExchangeAcquire

InterlockedCompareExchangeAcquire64

InterlockedCompareExchangeNoFence

InterlockedCompareExchangeNoFence64

InterlockedCompareExchangePointerAcquire

InterlockedCompareExchangePointerNoFence

InterlockedCompareExchangePointerRelease

InterlockedCompareExchangeRelease

InterlockedCompareExchangeRelease64

Funciones de sincronización