PTLib  Version 2.10.10
PAtomicInteger Class Reference

This class implements an integer that can be atomically incremented and decremented in a thread-safe manner. More...

#include <critsec.h>

Inheritance diagram for PAtomicInteger:
PAtomicBase

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 PAtomicIntegeroperator= (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 non-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)
 

Detailed Description

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.

Member Typedef Documentation

Constructor & Destructor Documentation

PAtomicInteger::PAtomicInteger ( IntegerType  value = 0)
inlineexplicit

Create a PAtomicInteger with the specified initial value.

Parameters
valueinitial value

Member Function Documentation

__inline bool PAtomicInteger::IsZero ( ) const
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

Returns
true if the integer has a value of zero.

References PAtomicBase::m_value.

__inline PAtomicInteger::operator IntegerType ( ) const
inline
Returns
Returns the value of the atomic integer

References PAtomicBase::m_value.

__inline bool PAtomicInteger::operator! ( ) const
inline

Test if atomic integer has a non-zero value.

References PAtomicBase::m_value.

__inline PAtomicInteger::IntegerType PAtomicInteger::operator++ ( )

atomically pre-increment the integer value

Returns
Returns the value of the integer after the increment

References PAtomicBase::m_value.

__inline PAtomicInteger::IntegerType PAtomicInteger::operator++ ( int  )

atomically post-increment the integer value

Returns
Returns the value of the integer before the increment

References PAtomicBase::m_value.

__inline PAtomicInteger::IntegerType PAtomicInteger::operator-- ( )

atomically pre-decrement the integer value

Returns
Returns the value of the integer after the decrement

References PAtomicBase::m_value.

__inline PAtomicInteger::IntegerType PAtomicInteger::operator-- ( int  )

atomically post-decrement the integer value

Returns
Returns the value of the integer before the decrement

References PAtomicBase::m_value.

__inline PAtomicInteger& PAtomicInteger::operator= ( IntegerType  value)
inline

Assign a value to the atomic integer.

References PAtomicBase::m_value.

void PAtomicInteger::SetValue ( IntegerType  value)
inline

Set the value of the atomic integer.

Parameters
valuevalue to set

References PAtomicBase::m_value.

Friends And Related Function Documentation

__inline ostream& operator<< ( ostream &  strm,
const PAtomicInteger i 
)
friend

The documentation for this class was generated from the following file: