Funciones intrínsecas _interlockedbittestandreset
Específicos de Microsoft
Genera una instrucción que establece el bit b de la dirección a en cero y devuelve su valor original.
unsigned char _interlockedbittestandreset(
long *a,
long b
);
unsigned char _interlockedbittestandreset_acq(
long *a,
long b
);
unsigned char _interlockedbittestandreset_HLEAcquire(
long *a,
long b
);
unsigned char _interlockedbittestandreset_HLERelease(
long *a,
long b
);
unsigned char _interlockedbittestandreset_nf(
long *a,
long b
);
unsigned char _interlockedbittestandreset_rel(
long *a,
long b
);
unsigned char _interlockedbittestandreset64(
__int64 *a,
__int64 b
);
unsigned char _interlockedbittestandreset64_HLEAcquire(
__int64 *a,
__int64 b
);
unsigned char _interlockedbittestandreset64_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 original del bit en la posición especificada por b.
Requisitos
Función intrínseca |
Arquitectura |
Header |
---|---|---|
_interlockedbittestandreset |
x86, ARM, x64 |
<intrin.h> |
_interlockedbittestandreset_acq, _interlockedbittestandreset_nf, _interlockedbittestandreset_rel |
ARM |
<intrin.h> |
_interlockedbittestandreset_HLEAcquire, _interlockedbittestandreset_HLERelease |
x86, x64 |
<immintrin.h> |
_interlockedbittestandreset64 |
x64 |
<intrin.h> |
_interlockedbittestandreset64_HLEAcquire, _interlockedbittestandreset64_HLERelease |
x64 |
<immintrin.h> |
Comentarios
En x86 y procesadores x64, estos intrínsecos usan la instrucción lock btr, que lee y establece el bit especificado en cero en una operación 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.