|
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 | |
Private Types inherited from PAtomicBase | |
| typedef int | IntegerType |
Private Member Functions inherited from PAtomicBase | |
| ~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 |