PAtomicInteger Class Reference

#include <critsec.h>

List of all members.

Public Types

typedef int IntegerType

Public Member Functions

 PAtomicInteger (IntegerType value=0)
 ~PAtomicInteger ()
 Destroy the atomic integer.
__inline operator IntegerType () const
__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
__inline bool operator! () const
 Test if atomic integer has a non-zero value.
IntegerType operator++ ()
IntegerType operator++ (int)
IntegerType operator-- ()
IntegerType operator-- (int)

Protected Attributes

pthread_mutex_t m_mutex
IntegerType m_value


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

typedef int PAtomicInteger::IntegerType


Constructor & Destructor Documentation

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

Create a PAtomicInteger with the specified initial value

Parameters:
value  initial 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:
PTrue if the integer has a value of zero

__inline PAtomicInteger::operator IntegerType (  )  const [inline]

Returns:
Returns the value of the atomic integer

__inline bool PAtomicInteger::operator! (  )  const [inline]

Test if atomic integer has a non-zero value.

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

atomically post-increment the integer value

Returns:
Returns the value of the integer before the increment

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

atomically pre-increment the integer value

Returns:
Returns the value of the integer after the increment

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

atomically post-decrement the integer value

Returns:
Returns the value of the integer before the decrement

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

atomically pre-decrement the integer value

Returns:
Returns the value of the integer after the decrement

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

Assign a value to the atomic integer.

__inline void PAtomicInteger::SetValue ( IntegerType  value  ) 

Set the value of the atomic integer.

Parameters:
value  value to set


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:
Generated on Thu May 27 01:36:48 2010 for PTLib by  doxygen 1.4.7