Compartir a través de


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