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.