Funções intrínsecas _interlockedbittestandreset
Seção específica da Microsoft
Gera uma instrução que configura o bit b
do endereço a
como zero e retorna o valor original dele.
Sintaxe
unsigned char _interlockedbittestandreset(
long *a,
long b
);
unsigned char _interlockedbittestandreset_acq(
long *a,
long b
);
unsigned char _interlockedbittestandreset_HLEAcquire(
long *a,
long b
);
unsigned char _interlockedbittestandreset_HLERelease(
long *a,
long b
);
unsigned char _interlockedbittestandreset_nf(
long *a,
long b
);
unsigned char _interlockedbittestandreset_rel(
long *a,
long b
);
unsigned char _interlockedbittestandreset64(
__int64 *a,
__int64 b
);
unsigned char _interlockedbittestandreset64_acq(
__int64 *a,
__int64 b
);
unsigned char _interlockedbittestandreset64_nf(
__int64 *a,
__int64 b
);
unsigned char _interlockedbittestandreset64_rel(
__int64 *a,
__int64 b
);
unsigned char _interlockedbittestandreset64_HLEAcquire(
__int64 *a,
__int64 b
);
unsigned char _interlockedbittestandreset64_HLERelease(
__int64 *a,
__int64 b
);
Parâmetros
a
[in] Um ponteiro para a memória a ser examinada.
b
[in] A posição de bit a ser testada.
Valor retornado
O valor original do bit na posição especificada por b
.
Requisitos
Intrinsic | Arquitetura | Cabeçalho |
---|---|---|
_interlockedbittestandreset |
x86, ARM, x64, ARM64 | <intrinca.h> |
_interlockedbittestandreset_acq , _interlockedbittestandreset_nf , _interlockedbittestandreset_rel |
ARM, ARM64 | <intrinca.h> |
_interlockedbittestandreset64_acq , _interlockedbittestandreset64_nf , _interlockedbittestandreset64_rel |
ARM64 | <intrinca.h> |
_interlockedbittestandreset_HLEAcquire , _interlockedbittestandreset_HLERelease |
x86, x64 | <immintrin.h> |
_interlockedbittestandreset64 |
x64, ARM64 | <intrinca.h> |
_interlockedbittestandreset64_HLEAcquire , _interlockedbittestandreset64_HLERelease |
x64 | <immintrin.h> |
Comentários
Em processadores x86 e x64, esses intrínsecos usam a instrução lock btr
, que lê e define o bit especificado como zero em uma operação atômica.
Em processadores de ARM, use intrínsecos com os sufixos _acq
e _rel
para semântica de aquisição e liberação, como no início e no final de uma seção crítica. Os intrínsecos de ARM com um sufixo _nf
("no fence") não funcionam como uma barreira de memória.
Em processadores Intel que suportam instruções HLE (Elisão de Bloqueio de Hardware), intrínsecos com os sufixos _HLEAcquire
e _HLERelease
incluem uma dica para o processador que pode acelerar o desempenho, eliminando uma etapa de gravação de bloqueio no hardware. Se esses intrínsecos forem chamados em processadores que não dão suporte a HLE, a dica será ignorada.
Essas rotinas somente estão disponíveis como intrínsecos.
Fim da seção específica da Microsoft