Share via


_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

Vedi anche

Intrinseci del compilatore
Conflitti con il compilatore x86