fonctions intrinsèques _interlockedbittestandset
Section spécifique à Microsoft
Générez une instruction pour examiner le bit b
de l’adresse a
et renvoyer sa valeur actuelle avant de la définir sur 1.
Syntaxe
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
);
Paramètres
a
[in] Pointeur vers la mémoire à examiner.
b
[in] Position du bit à tester.
Valeur retournée
Valeur du bit à la position b
avant qu’il ne soit défini.
Spécifications
Intrinsic | Architecture | En-tête |
---|---|---|
_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> |
Notes
Sur les processeurs x86 et x64, ces intrinsèques utilisent l’instruction lock bts
pour lire et définir le bit spécifié sur 1. L'opération est atomique.
Sur les processeurs ARM et ARM64, utilisez les intrinsèques avec _acq
et _rel
suffixes pour acquérir et libérer la sémantique, comme au début et à la fin d’une section critique. Les intrinsèques ARM avec un _nf
suffixe (« sans clôture ») ne font pas office de barrière de mémoire.
Sur les processeurs Intel qui prennent en charge les instructions HLE (Hardware Lock Elision), les intrinsèques ayant les suffixes _HLEAcquire
et _HLERelease
incluent une indication pour le processeur. Celle-ci permet d'accélérer les performances en éliminant une étape d'écriture de verrou dans le matériel. Si ces intrinsèques sont appelées sur des processeurs qui ne prennent pas en charge HLE, l’indicateur est ignoré.
Ces routines sont disponibles seulement comme fonctions intrinsèques.
FIN de la section spécifique à Microsoft
Voir aussi
Intrinsèques du compilateur
Conflits avec le compilateur x86