Compartir a través de


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.

Vea también

Referencia

Intrínsecos del controlador

Conflictos con el compilador de x86