PTLib
Version 2.14.3
|
This class implements an integer that can be atomically incremented and decremented in a thread-safe manner. More...
#include <critsec.h>
Public Types | |
typedef PAtomicBase::IntegerType | IntegerType |
Public Member Functions | |
PAtomicInteger (IntegerType value=0) | |
Create a PAtomicInteger with the specified initial value. More... | |
__inline | operator IntegerType () const |
__inline PAtomicInteger & | operator= (IntegerType value) |
Assign a value to the atomic integer. More... | |
void | SetValue (IntegerType value) |
Set the value of the atomic integer. More... | |
__inline bool | IsZero () const |
Test if an atomic integer has a zero value. More... | |
__inline bool | operator! () const |
Test if atomic integer has a zero value. More... | |
IntegerType | operator++ () |
atomically pre-increment the integer value More... | |
IntegerType | operator++ (int) |
atomically post-increment the integer value More... | |
IntegerType | operator-- () |
atomically pre-decrement the integer value More... | |
IntegerType | operator-- (int) |
atomically post-decrement the integer value More... | |
Friends | |
__inline ostream & | operator<< (ostream &strm, const PAtomicInteger &i) |
Additional Inherited Members | |
![]() | |
typedef int | IntegerType |
![]() | |
~PAtomicBase () | |
Destroy the atomic integer. More... | |
PAtomicBase (IntegerType value) | |
This class implements an integer that can be atomically incremented and decremented in a thread-safe manner.
On Windows, the integer is of type long and this class is implemented using InterlockedIncrement and InterlockedDecrement integer is of type long.
On Unix systems with GNU std++ support for __exchange_and_add, the integer is of type _Atomic_word (normally int).
On Solaris atomic_add_32_nv is used.
On all other systems, this class is implemented using PCriticalSection and the integer is of type int.
|
inlineexplicit |
Create a PAtomicInteger with the specified initial value.
value | initial value |
|
inline |
Test if an atomic integer has a zero value.
Note that this, is a non-atomic test - use the return value of the operator++() or operator–() tests to perform atomic operations
References PAtomicBase::m_value.
|
inline |
References PAtomicBase::m_value.
|
inline |
Test if atomic integer has a zero value.
References PAtomicBase::m_value.
__inline PAtomicInteger::IntegerType PAtomicInteger::operator++ | ( | ) |
atomically pre-increment the integer value
References PAtomicBase::m_value.
__inline PAtomicInteger::IntegerType PAtomicInteger::operator++ | ( | int | ) |
atomically post-increment the integer value
References PAtomicBase::m_value.
__inline PAtomicInteger::IntegerType PAtomicInteger::operator-- | ( | ) |
atomically pre-decrement the integer value
References PAtomicBase::m_value.
__inline PAtomicInteger::IntegerType PAtomicInteger::operator-- | ( | int | ) |
atomically post-decrement the integer value
References PAtomicBase::m_value.
|
inline |
Assign a value to the atomic integer.
References PAtomicBase::m_value.
|
inline |
|
friend |