InterlockedBitTestAndReset function (Windows)

Switch View :
ScriptFree
InterlockedBitTestAndReset function

Applies to: desktop apps only

Tests the specified bit of the specified LONG value and sets it to 0. The operation is atomic.

Syntax

BOOLEAN WINAPI InterlockedBitTestAndReset(
  __in  LONG volatile *Base,
  __in  LONG Bit
);

Parameters

Base [in]

A pointer to a variable.

Bit [in]

The bit position to be tested.

Return value

The value of the specified bit.

Remarks

The interlocked functions provide a simple mechanism for synchronizing access to a variable that is shared by multiple threads. This function is atomic with respect to calls to other interlocked functions.

This function is implemented using a compiler intrinsic where possible. For more information, see the WinBase.h header file and _interlockedbittestandreset.

This function generates a full memory barrier (or fence) to ensure that memory operations are completed in order.

Requirements

Header

Winnt.h (include Windows.h)

See also

Interlocked Variable Access
InterlockedBitTestAndReset64
InterlockedBitTestAndSet
InterlockedBitTestAndSet64
Synchronization Functions

 

 

Send comments about this topic to Microsoft

Build date: 3/7/2012

Community Content

JensG
not so obvious ...
... is the fact, that the Bit functions do indeed work with Bit > sizeof(LONG). This code sets lData[1] to 1 and leaves lData[0] untouched:

LONG lData[4] = {0,0,0,0};
InterlockedBitTestAndSet( &lData[0], sizeof(LONG)*8);

Developers, watch your bit numbers to prevent buffer overflows!