Compartir a través de


Función InterlockedCompareExchange128 (winnt.h)

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

Para operar en valores de 16 bits, use la función InterlockedCompareExchange16 .

Para operar en valores de 32 bits, use la función InterlockedCompareExchange .

Para operar en valores de 64 bits, use la función InterlockedCompareExchange64 .

Sintaxis

BOOLEAN InterlockedCompareExchange128(
  [in, out] LONG64 volatile *Destination,
  [in]      LONG64          ExchangeHigh,
  [in]      LONG64          ExchangeLow,
  [in, out] LONG64          *ComparandResult
);

Parámetros

[in, out] Destination

Puntero al valor de destino. Este parámetro es una matriz de dos enteros de 64 bits considerados como un campo de 128 bits.

[in] ExchangeHigh

Parte alta del valor de intercambio.

[in] ExchangeLow

Parte baja del valor de intercambio.

[in, out] ComparandResult

Valor con el que se va a comparar. Este parámetro es una matriz de dos enteros de 64 bits considerados como un campo de 128 bits. En la salida, esto se sobrescribe con el valor original del destino.

Valor devuelto

La función devuelve 1 si ComparandResult es igual al valor original del parámetro Destination o 0 si ComparandResult no es igual al valor original del parámetro Destination .

Comentarios

La función compara el valor destination con el valor ComparandResult :

  • Si el valor destination es igual al valor ComparandResult , los valores ExchangeHigh y ExchangeLow se almacenan en la matriz especificada por Destination y también en la matriz especificada por ComparandResult.
  • De lo contrario, el destino se deja sin modificar.
Independientemente del resultado de la comparación, el valor de Destination original se almacena en la matriz especificada por ComparandResult.

Los parámetros de esta función deben alinearse en un límite de 16 bytes; de lo contrario, la función se comportará de forma impredecible en sistemas x64. Consulte _aligned_malloc.

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 solo está disponible en sistemas basados en x64 y se implementa mediante un intrínseco del compilador. Para obtener más información, vea el archivo de encabezado WinBase.h y _InterlockedCompareExchange128.

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

Requisitos

Requisito Value
Cliente mínimo compatible Windows 8 [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2012 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado winnt.h (incluye Windows.h)

Consulte también

Acceso a variables interbloqueadas

InterlockedCompare64Exchange128

InterlockedCompareExchange

InterlockedCompareExchange16

InterlockedCompareExchange16Acquire

InterlockedCompareExchange16NoFence

InterlockedCompareExchange16Release

InterlockedCompareExchange64

InterlockedCompareExchangeAcquire

InterlockedCompareExchangeAcquire64

InterlockedCompareExchangeNoFence

InterlockedCompareExchangeNoFence64

InterlockedCompareExchangePointer

InterlockedCompareExchangePointerAcquire

InterlockedCompareExchangePointerNoFence

InterlockedCompareExchangePointerRelease

InterlockedCompareExchangeRelease

InterlockedCompareExchangeRelease64

Funciones de sincronización