Quick Links: |
#include <bsls_atomic.h>
Classes | |
struct | RemoveConst |
struct | RemoveConst< TYPE1 const > |
Public Member Functions | |
AtomicPointer () | |
AtomicPointer (TYPE *value) | |
~AtomicPointer () | |
AtomicPointer< TYPE > & | operator= (TYPE *value) |
void | store (TYPE *value) |
void | storeRelaxed (TYPE *value) |
void | storeRelease (TYPE *value) |
TYPE * | swap (TYPE *swapValue) |
TYPE * | swapAcqRel (TYPE *swapValue) |
TYPE * | testAndSwap (const TYPE *compareValue, TYPE *swapValue) |
TYPE * | testAndSwapAcqRel (const TYPE *compareValue, TYPE *swapValue) |
TYPE & | operator* () const |
TYPE * | operator-> () const |
operator TYPE * () const | |
TYPE * | load () const |
TYPE * | loadRelaxed () const |
TYPE * | loadAcquire () const |
This class implements an atomic pointer to a parameterized TYPE
, which supports common pointer operations in a way that is guaranteed to be atomic. Operations on objects of this class provide the sequential consistency memory ordering guarantee unless explicitly qualified with a less strict consistency guarantee suffix (i.e., Acquire, Release, AcqRel or Relaxed).
bsls::AtomicPointer< TYPE >::AtomicPointer | ( | ) |
Create an atomic pointer object having the default value NULL.
bsls::AtomicPointer< TYPE >::AtomicPointer | ( | TYPE * | value | ) |
Create an atomic pointer object having the specified value
.
bsls::AtomicPointer< TYPE >::~AtomicPointer | ( | ) |
Destroy this atomic pointer.
AtomicPointer<TYPE>& bsls::AtomicPointer< TYPE >::operator= | ( | TYPE * | value | ) |
Atomically assign the specified value
to this object, and return a reference offering modifiable access to this
object.
void bsls::AtomicPointer< TYPE >::store | ( | TYPE * | value | ) |
Atomically assign the specified value
to this object, providing the sequential consistency memory ordering guarantee.
void bsls::AtomicPointer< TYPE >::storeRelaxed | ( | TYPE * | value | ) |
Atomically assign the specified value
to this object, providing the relaxed memory ordering guarantee.
void bsls::AtomicPointer< TYPE >::storeRelease | ( | TYPE * | value | ) |
Atomically assign the specified value
to this object, providing the release memory ordering guarantee.
TYPE* bsls::AtomicPointer< TYPE >::swap | ( | TYPE * | swapValue | ) |
Atomically set the value of this object to the specified swapValue
and return its previous value.
TYPE* bsls::AtomicPointer< TYPE >::swapAcqRel | ( | TYPE * | swapValue | ) |
Atomically set the value of this object to the specified swapValue
and return its previous value, providing the acquire/release memory ordering guarantee.
TYPE* bsls::AtomicPointer< TYPE >::testAndSwap | ( | const TYPE * | compareValue, | |
TYPE * | swapValue | |||
) |
Compare the value of this object to the specified compareValue
. If they are equal, set the value of this atomic pointer to the specified swapValue
, otherwise leave this value unchanged. Return the previous value of this atomic pointer, whether or not the swap occurred. Note that the entire test-and-swap operation is performed atomically.
TYPE* bsls::AtomicPointer< TYPE >::testAndSwapAcqRel | ( | const TYPE * | compareValue, | |
TYPE * | swapValue | |||
) |
Compare the value of this object to the specified compareValue
. If they are equal, set the value of this atomic pointer to the specified swapValue
, otherwise leave this value unchanged. Return the previous value of this atomic pointer, whether or not the swap occurred. Note that the entire test-and-swap operation is performed atomically and it provides the acquire/release memory ordering guarantee.
TYPE& bsls::AtomicPointer< TYPE >::operator* | ( | ) | const |
Return a reference to the value currently pointed to by this object. The behavior is undefined if this pointer has a value of 0.
TYPE* bsls::AtomicPointer< TYPE >::operator-> | ( | ) | const |
Return the current value of this object.
bsls::AtomicPointer< TYPE >::operator TYPE * | ( | ) | const |
Return the current value of this object.
TYPE* bsls::AtomicPointer< TYPE >::load | ( | ) | const |
Return the current value of this object.
TYPE* bsls::AtomicPointer< TYPE >::loadRelaxed | ( | ) | const |
Return the current value of this object, providing the relaxed memory ordering guarantee.
TYPE* bsls::AtomicPointer< TYPE >::loadAcquire | ( | ) | const |
Return the current value of this object, providing the acquire memory ordering guarantee.