Updated: March 2011
Generate the lock bts instruction, which examines bit b of the address a and returns its current value before setting it to 1.
unsigned char _interlockedbittestandset( long *a, long b ); unsigned char _interlockedbittestandset64( __int64 *a, __int64 b );
As a result of the lock bts instruction, the bit is set to 1. The operation is atomic.
In Visual C++ 2005, these functions behave as read-write memory barriers. For more information, see _ReadWriteBarrier.
This routine is only available as an intrinsic.