Partager via


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