Funciones intrínsecas _InterlockedExchangePointer
Específicos de Microsoft
Realizar 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.
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
[in, out] Target
Puntero al puntero al valor que se va a intercambiar. La función establece el valor en Value y devuelve su valor anterior.[in] Value
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
Función intrínseca |
Arquitectura |
Header |
---|---|---|
_InterlockedExchangePointer |
x86, ARM, x64 |
<intrin.h> |
_InterlockedExchangePointer_acq, _InterlockedExchangePointer_rel, _InterlockedExchangePointer_nf |
ARM |
<intrin.h> |
_InterlockedExchangePointer_HLEAcquire, _InterlockedExchangePointer_HLERelease |
x64 con compatibilidad HLE |
<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, se produce un error en la función. En un sistema de 32 bits, los parámetros son de 32 bits y deben estar alineados en límites de 32 bits. Para obtener más información, consulte alinear.
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.