Funciones intrínsecas _InterlockedExchangePointer
Específicos de Microsoft
Realiza una operación de intercambio atómico, que copia la dirección que se pasa como segundo argumento al primero y devuelve la dirección original del primero.
Sintaxis
void * _InterlockedExchangePointer(
void * volatile * Target,
void * Value
);
void * _InterlockedExchangePointer_acq(
void * volatile * Target,
void * Value
);
void * _InterlockedExchangePointer_rel(
void * volatile * Target,
void * Value
);
void * _InterlockedExchangePointer_nf(
void * volatile * Target,
void * Value
);
void * _InterlockedExchangePointer_HLEAcquire(
void * volatile * Target,
void * Value
);
void * _InterlockedExchangePointer_HLERelease(
void * volatile * Target,
void * Value
);
Parámetros
Target
[in, out] Puntero al puntero al valor que se va a intercambiar. La función establece el valor en Value y devuelve su valor anterior.
Valor
[in] Valor que se va a intercambiar con el valor al que apunta Target.
Valor devuelto
La función devuelve el valor inicial al que apunta Target.
Requisitos
Intrinsic | Arquitectura | Encabezado |
---|---|---|
_InterlockedExchangePointer |
x86, ARM, x64, ARM64 | <intrin.h> |
_InterlockedExchangePointer_acq , , _InterlockedExchangePointer_rel , _InterlockedExchangePointer_nf |
ARM, ARM64 | <intrin.h> |
_InterlockedExchangePointer_HLEAcquire , _InterlockedExchangePointer_HLERelease |
x64 | <immintrin.h> |
En la arquitectura x86, _InterlockedExchangePointer
es una macro que llama a _InterlockedExchange
.
Comentarios
En un sistema de 64 bits, los parámetros son de 64 bits y deben estar alineados en límites de 64 bits. De lo contrario, la función genera un error. En un sistema de 32 bits, los parámetros son de 32 bits y deben estar alineados en límites de 32 bits. Para más información, consulte align.
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 con un sufijo _nf
("sin límite") no actúan como una barrera de memoria.
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
Consulte también
Intrínsecos del compilador
Conflictos con el compilador de x86