Funciones intrínsecas _interlockedbittestandset

Específicos de Microsoft

Generar una instrucción que examina el bit b de la dirección a y devuelve su valor actual antes de establecerla a 1.

unsigned char _interlockedbittestandset(
   long *a,
   long b
);
unsigned char _interlockedbittestandset_acq(
   long *a,
   long b
);
unsigned char _interlockedbittestandset_HLEAcquire(
   long *a,
   long b
);
unsigned char _interlockedbittestandset_HLERelease(
   long *a,
   long b
);
unsigned char _interlockedbittestandset_nf(
   long *a,
   long b
);
unsigned char _interlockedbittestandset_rel(
   long *a,
   long b
);
unsigned char _interlockedbittestandset64(
   __int64 *a,
   __int64 b
);
unsigned char _interlockedbittestandset64_HLEAcquire(
   __int64 *a,
   __int64 b
);
unsigned char _interlockedbittestandset64_HLERelease(
   __int64 *a,
   __int64 b
);

Parámetros

  • [in] a
    Puntero a la memoria que se va a examinar.

  • [in] b
    La posición de bit que se va a probar.

Valor devuelto

El valor del bit en la posición b antes de establecerse.

Requisitos

Función intrínseca

Arquitectura

Header

_interlockedbittestandset

x86, ARM, x64

<intrin.h>

_interlockedbittestandset_acq, _interlockedbittestandset_nf, _interlockedbittestandset_rel

ARM

<intrin.h>

_interlockedbittestandset_HLEAcquire, _interlockedbittestandset_HLERelease

x86, x64

<immintrin.h>

_interlockedbittestandset64

x64

<intrin.h>

_interlockedbittestandset64_HLEAcquire, _interlockedbittestandset64_HLERelease

x64

<immintrin.h>

Comentarios

En x86 y procesadores x64, estos intrínsecos usan la instrucción lock bts para leer y establecer el bit especificado en 1. La operación es atómica.

En procesadores ARM, utilice los intrínsecos con sufijos _acq y _rel para adquirir y liberar semántica, como al principio y al final de una sección crítica. Los intrínsecos ARM 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 procesadores 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