Funciones intrínsecas _InterlockedCompareExchangePointer
Específicos de Microsoft
Realiza una operación atómica que almacena la dirección Exchange
en la dirección Destination
si Comparand
y la dirección Destination
son iguales.
Sintaxis
void * _InterlockedCompareExchangePointer (
void * volatile * Destination,
void * Exchange,
void * Comparand
);
void * _InterlockedCompareExchangePointer_acq (
void * volatile * Destination,
void * Exchange,
void * Comparand
);
void * _InterlockedCompareExchangePointer_HLEAcquire (
void * volatile * Destination,
void * Exchange,
void * Comparand
);
void * _InterlockedCompareExchangePointer_HLERelease (
void * volatile * Destination,
void * Exchange,
void * Comparand
);
void * _InterlockedCompareExchangePointer_nf (
void * volatile * Destination,
void * Exchange,
void * Comparand
);
void * _InterlockedCompareExchangePointer_np (
void * volatile * Destination,
void * Exchange,
void * Comparand
);
void * _InterlockedCompareExchangePointer_rel (
void * volatile * Destination,
void * Exchange,
void * Comparand
);
Parámetros
Destino
[in, out] Puntero a un puntero al valor de destino. El signo se omite.
Exchange
[in] Puntero de intercambio. El signo se omite.
Comparand
[in] Puntero que se compara con el destino. El signo se omite.
Valor devuelto
El valor devuelto es el valor inicial del destino.
Requisitos
Intrinsic | Arquitectura | Encabezado |
---|---|---|
_InterlockedCompareExchangePointer |
x86, ARM, x64, ARM64 | <intrin.h> |
_InterlockedCompareExchangePointer_acq , , _InterlockedCompareExchangePointer_nf , _InterlockedCompareExchangePointer_rel |
ARM, ARM64 | <iiintrin.h> |
_InterlockedCompareExchangePointer_HLEAcquire , _InterlockedCompareExchangePointer_HLERelease |
x86, x64 | <immintrin.h> |
Comentarios
_InterlockedCompareExchangePointer
realiza una comparación atómica de la dirección Destination
con la dirección Comparand
. Si la dirección Destination
es igual a la dirección Comparand
, la dirección Exchange
se almacena en la dirección especificada por Destination
. De lo contrario, no se realiza ninguna operación.
_InterlockedCompareExchangePointer
proporciona compatibilidad con intrínsecos del compilador para la función InterlockedCompareExchangePointer de Windows SDK de Win32.
Para un ejemplo de cómo usar _InterlockedCompareExchangePointer
, consulte _InterlockedDecrement.
En plataformas ARM, utilice los intrínsecos con sufijos _acq
y _rel
si necesita adquirir y liberar semántica, como al principio y al final de una sección crítica. Los intrínsecos de ARM con un sufijo _nf
("sin barrera") no actúan como una barrera de memoria.
Los intrínsecos con un sufijo _np
("sin captura previa") impiden que el compilador inserte una posible operación de captura previa.
En las plataformas de Intel que admiten instrucciones de Elisión de bloqueo de Hardware (HLE), los intrínsecos con sufijos _HLEAcquire
y _HLERelease
incluyen una sugerencia para el procesador que puede acelerar el rendimiento mediante la eliminación de un paso de escritura de bloqueo en el hardware. Si se llama a estos intrínsecos en plataformas que no son compatibles con HLE, se omite la sugerencia.
Estas rutinas solo están disponibles como intrínsecos.
FIN de Específicos de Microsoft