FIX::atomic_count Class Reference

Atomic count class - consider using interlocked functions. More...

`#include <AtomicCount.h>`

## Public Member Functions

| atomic_count (long v)
long | operator++ ()
long | operator-- ()
| operator long () const

## Private Member Functions

| atomic_count (atomic_count const &)
atomic_count & | operator= (atomic_count const &)

## Static Private Member Functions

static int | atomic_exchange_and_add (int *pw, int dv)

## Private Attributes

int | value_

## Detailed Description

Atomic count class - consider using interlocked functions.

Definition at line 126 of file AtomicCount.h.

## Constructor & Destructor Documentation

## atomic_count() [1/2]

FIX::atomic_count::atomic_count | ( | long | v | ) |

inline explicit

Definition at line 130 of file AtomicCount.h.

: value_(static_cast<int>(v)) {}
FIX::atomic_count::value_
int value_
Definition: AtomicCount.h:152

## atomic_count() [2/2]

FIX::atomic_count::atomic_count | ( | atomic_count const & |  | ) |

private

## Member Function Documentation

## atomic_exchange_and_add()

static int FIX::atomic_count::atomic_exchange_and_add | ( | int * | pw,
|  | int | dv
| ) |  |

inline static private

Definition at line 156 of file AtomicCount.h.

{
// int r = *pw;
// *pw += dv;
// return r;
int r;
__asm__ __volatile__
(
"lock\n\t"
"xadd %1, %0":
"+m"(*pw), "=r"(r) : // outputs (%0, %1)
"1"(dv) : // inputs (%2 == %1)
"memory", "cc" // clobbers
);
return r;
}

Referenced by operator long(), operator++(), and operator--().

## operator long()

FIX::atomic_count::operator long | ( |  | ) | const

inline

Definition at line 142 of file AtomicCount.h.

{
return atomic_exchange_and_add( &value_, 0 );
}
FIX::atomic_count::atomic_exchange_and_add
static int atomic_exchange_and_add(int *pw, int dv)
Definition: AtomicCount.h:156

References atomic_exchange_and_add(), and value_.

## operator++()

long FIX::atomic_count::operator++ | ( |  | ) |

inline

Definition at line 132 of file AtomicCount.h.

{
return atomic_exchange_and_add( &value_, 1 ) + 1;
}

References atomic_exchange_and_add(), and value_.

## operator--()

long FIX::atomic_count::operator-- | ( |  | ) |

inline

Definition at line 137 of file AtomicCount.h.

{
return atomic_exchange_and_add( &value_, -1 ) - 1;
}

References atomic_exchange_and_add(), and value_.

## operator=()

atomic_count& FIX::atomic_count::operator= | ( | atomic_count const & |  | ) |

private

## Member Data Documentation

## value_

int FIX::atomic_count::value_

mutable private

Definition at line 152 of file AtomicCount.h.

Referenced by operator long(), operator++(), and operator--().

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

- AtomicCount.h