Funciones intrínsecas _interlockedbittestandset
Específicos de Microsoft
Generan una instrucción que examina el bit b
de la dirección a
y devuelven su valor actual antes de establecerlo en 1.
Sintaxis
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_acq(
__int64 *a,
__int64 b
);
unsigned char _interlockedbittestandset64_nf(
__int64 *a,
__int64 b
);
unsigned char _interlockedbittestandset64_rel(
__int64 *a,
__int64 b
);
unsigned char _interlockedbittestandset64_HLEAcquire(
__int64 *a,
__int64 b
);
unsigned char _interlockedbittestandset64_HLERelease(
__int64 *a,
__int64 b
);
Parámetros
a
[in] Un puntero a la memoria que se va a examinar.
b
[in] La posición de bit que se va a probar.
Valor devuelto
El valor del bit en la posición b
antes de que se lo establezca.
Requisitos
Intrinsic | Arquitectura | Encabezado |
---|---|---|
_interlockedbittestandset |
x86, ARM, x64, ARM64 | <intrin.h> |
_interlockedbittestandset_acq , , _interlockedbittestandset_nf , _interlockedbittestandset_rel |
ARM, ARM64 | <intrin.h> |
_interlockedbittestandset64_acq , , _interlockedbittestandset64_nf , _interlockedbittestandset64_rel |
ARM64 | <intrin.h> |
_interlockedbittestandset_HLEAcquire , _interlockedbittestandset_HLERelease |
x86, x64 | <immintrin.h> |
_interlockedbittestandset64 |
x64, ARM64 | <intrin.h> |
_interlockedbittestandset64_HLEAcquire , _interlockedbittestandset64_HLERelease |
x64 | <immintrin.h> |
Comentarios
En procesadores x86 y x64, estos intrínsecos utilizan la instrucción lock bts
para leer y establecer el bit especificado en 1. La operación es atómica.
En procesadores ARM y ARM64, utilice los intrínsecos con los sufijos _acq
y _rel
para adquirir y liberar semántica; por ejemplo, al principio y al final de una sección crítica. Los intrínsecos de ARM con un sufijo _nf
("sin barrera") 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.
FIN de Específicos de Microsoft
Consulte también
Intrínsecos del compilador
Conflictos con el compilador de x86