MADNESS 0.10.1
|
An integer with atomic set, get, read+increment, read+decrement, and decrement+test operations. More...
#include <atomicint.h>
Public Member Functions | |
bool | dec_and_test () |
Decrements the counter and returns true if the new value is zero,. | |
operator int () const volatile | |
Returns the value of the counter with fence, ensuring subsequent operations are not moved before the load. | |
int | operator++ () |
Increments the counter and returns the incremented value. | |
int | operator++ (int) |
Increments the counter and returns the original value. | |
int | operator+= (const int inc) |
Add value and return the new value. | |
int | operator-- () |
Decrements the counter and returns the decremented value. | |
int | operator-- (int) |
Decrements the counter and returns the original value. | |
int | operator-= (const int dec) |
Subtract dec and return the new value. | |
AtomicInt & | operator= (const AtomicInt &other) |
Sets the value of the counter, with fences to ensure that operations are not moved to either side of the load+store. | |
int | operator= (int other) |
Private Types | |
typedef volatile int | atomic_int |
Storage type for the atomic integer. | |
Private Member Functions | |
int | exchange_and_add (int i) |
Private Attributes | |
atomic_int | value |
The atomic integer. | |
An integer with atomic set, get, read+increment, read+decrement, and decrement+test operations.
Only the default constructor is available and it does \emph not initialize the variable.
Consciously modeled after the TBB API to prepare for switching to it.
Storage type for the atomic integer.
|
inline |
Decrements the counter and returns true if the new value is zero,.
Referenced by madness::Barrier::enter(), and madness::detail::RemoteCounterBase::release().
[in] | i | Description needed. |
References madness::nonlinear_vector_solver(), and value.
Referenced by operator++(), operator++(), operator+=(), operator--(), operator--(), and operator-=().
|
inline |
Returns the value of the counter with fence, ensuring subsequent operations are not moved before the load.
References madness::nonlinear_vector_solver(), and value.
|
inline |
Increments the counter and returns the incremented value.
References exchange_and_add(), and value.
Increments the counter and returns the original value.
References exchange_and_add(), and value.
Add value
and return the new value.
[in] | inc | The value to be added. |
References exchange_and_add(), and value.
|
inline |
Decrements the counter and returns the decremented value.
References exchange_and_add(), and value.
Decrements the counter and returns the original value.
References exchange_and_add(), and value.
Subtract dec
and return the new value.
[in] | dec | The value to be subtracted. |
References exchange_and_add(), and value.
Sets the value of the counter, with fences to ensure that operations are not moved to either side of the load+store.
[in] | other | The value to set to. |
AtomicInt
. References madness::nonlinear_vector_solver().
Sets the value of the counter, with a fence ensuring that preceding operations are not moved after the store.
[in] | other | Description needed. |
References madness::nonlinear_vector_solver(), and value.
|
private |
The atomic integer.
Referenced by exchange_and_add(), operator int(), operator++(), operator++(), operator+=(), operator--(), operator--(), operator-=(), and operator=().