PTLib  Version 2.10.4
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
PAtomicInteger Class Reference

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

#include <critsec.h>

Public Types

typedef int IntegerType

Public Member Functions

 PAtomicInteger (IntegerType value=0)
 Create a PAtomicInteger with the specified initial value.
 ~PAtomicInteger ()
 Destroy the atomic integer.
__inline operator IntegerType () const
__inline PAtomicIntegeroperator= (IntegerType i)
 Assign a value to the atomic integer.
__inline PAtomicIntegeroperator= (const PAtomicInteger &ref)
 Assign a value to the atomic integer.
void SetValue (IntegerType value)
 Set the value of the atomic integer.
__inline bool IsZero () const
 Test if an atomic integer has a zero value.
__inline bool operator! () const
 Test if atomic integer has a non-zero value.
IntegerType operator++ ()
 atomically pre-increment the integer value
IntegerType operator++ (int)
 atomically post-increment the integer value
IntegerType operator-- ()
 atomically pre-decrement the integer value
IntegerType operator-- (int)
 atomically post-decrement the integer value

Protected Attributes

pthread_mutex_t m_mutex
IntegerType m_value

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 all other systems, this class is implemented using PCriticalSection and the integer is of type int.

Member Typedef Documentation

Constructor & Destructor Documentation

__inline PAtomicInteger::PAtomicInteger ( IntegerType  value = 0)
explicit

Create a PAtomicInteger with the specified initial value.

Parameters
valueinitial value
__inline PAtomicInteger::~PAtomicInteger ( )

Destroy the atomic integer.

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 m_value.

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

References m_value.

__inline bool PAtomicInteger::operator! ( ) const
inline

Test if atomic integer has a non-zero value.

References m_value.

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

atomically pre-increment the integer value

Returns
Returns the value of the integer after the increment

References 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 m_value.

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

atomically pre-decrement the integer value

Returns
Returns the value of the integer after the decrement

References 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 m_value.

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

Assign a value to the atomic integer.

References SetValue().

__inline PAtomicInteger& PAtomicInteger::operator= ( const PAtomicInteger ref)
inline

Assign a value to the atomic integer.

References SetValue().

__inline void PAtomicInteger::SetValue ( IntegerType  value)

Set the value of the atomic integer.

Parameters
valuevalue to set

References m_value.

Referenced by operator=().

Friends And Related Function Documentation

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

Member Data Documentation

pthread_mutex_t PAtomicInteger::m_mutex
protected
IntegerType PAtomicInteger::m_value
protected

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