Information
The topic you requested is included in another documentation set. For convenience, it's displayed below. Choose Switch to see the topic in its original location.

_interlockedbittestandreset Intrinsic Functions

 

For the latest documentation on Visual Studio 2017, see Visual Studio 2017 Documentation.

For the latest documentation on Visual Studio 2017, see _interlockedbittestandreset Intrinsic Functions on docs.microsoft.com. Microsoft Specific

Generates an instruction which sets bit b of the address a to zero and returns its original value.

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_HLEAcquire(  
   __int64 *a,  
   __int64 b  
);  
unsigned char _interlockedbittestandreset64_HLERelease(  
   __int64 *a,  
   __int64 b  
);  

Parameters

[in] a
A pointer to the memory to examine.

[in] b
The bit position to test.

The original value of the bit at the position specified by b.

IntrinsicArchitectureHeader
_interlockedbittestandresetx86, ARM, x64<intrin.h>
_interlockedbittestandreset_acq, _interlockedbittestandreset_nf, _interlockedbittestandreset_relARM<intrin.h>
_interlockedbittestandreset_HLEAcquire, _interlockedbittestandreset_HLEReleasex86, x64<immintrin.h>
_interlockedbittestandreset64x64<intrin.h>
_interlockedbittestandreset64_HLEAcquire, _interlockedbittestandreset64_HLEReleasex64<immintrin.h>

On x86 and x64 processors, these intrinsics use the lock btr instruction, that reads and sets the specified bit to zero in an atomic operation.

On ARM processors, use the intrinsics with _acq and _rel suffixes for acquire and release semantics, such as at the beginning and end of a critical section. The ARM intrinsics with an _nf ("no fence") suffix do not act as a memory barrier.

On Intel processors that support Hardware Lock Elision (HLE) instructions, the intrinsics with _HLEAcquire and _HLERelease suffixes include a hint to the processor that can accelerate performance by eliminating a lock write step in hardware. If these intrinsics are called on processors that do not support HLE, the hint is ignored.

These routines are only available as intrinsics.

Compiler Intrinsics
Conflicts with the x86 Compiler

Show: