PTLib  Version 2.14.3
 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>

Inheritance diagram for PAtomicInteger:
Collaboration diagram for PAtomicInteger:

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 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)
 

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 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: