_interlockedbittestandset funzioni intrinseche
Sezione specifica Microsoft
Generare un'istruzione per esaminare il bit b
dell'indirizzo a
e restituirne il valore corrente prima di impostarlo su 1.
Sintassi
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
);
Parametri
a
[in] Puntatore alla memoria da esaminare.
b
[in] Posizione di bit da testare.
Valore restituito
Valore del bit in corrispondenza della posizione b
prima che venga impostato.
Requisiti
Intrinsic | Architettura | Intestazione |
---|---|---|
_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> |
Osservazioni:
Nei processori x86 e x64, questi intrinseci usano l'istruzione lock bts
per leggere e impostare il bit specificato su 1. L'operazione è atomica.
Nei processori ARM e ARM64 usare gli intrinseci con _acq
e _rel
i suffissi per acquisire e rilasciare semantica, ad esempio all'inizio e alla fine di una sezione critica. Gli intrinseci ARM con un _nf
suffisso ("nessun recinto") non fungono da barriera di memoria.
Nei processori Intel che supportano le istruzioni HLE (Hardware Lock Elision), le funzioni intrinseche con suffissi _HLEAcquire
e _HLERelease
includono un hint per il processore che consente di accelerare le prestazioni eliminando un passaggio di blocco scrittura nell'hardware. Se queste funzioni intrinseche vengono chiamate su processori che non supportano HLE, l'hint viene ignorato.
Queste routine sono disponibili solo come funzioni intrinseche.
Fine sezione specifica Microsoft