cds
2.3.2
|
Atomic cache-friendly item counter. More...
#include <cds/algo/atomic.h>
Public Types | |
typedef atomics::atomic_size_t | atomic_type |
atomic type used | |
typedef size_t | counter_type |
Integral item counter type (size_t) | |
Public Member Functions | |
cache_friendly_item_counter () | |
Default ctor initializes the counter to zero. | |
counter_type | value (atomics::memory_order order=atomics::memory_order_relaxed) const |
Returns current value of the counter. | |
operator counter_type () const | |
Same as value() with relaxed memory ordering. | |
atomic_type & | getAtomic () |
Returns underlying atomic interface. | |
const atomic_type & | getAtomic () const |
Returns underlying atomic interface (const) | |
counter_type | inc (atomics::memory_order order=atomics::memory_order_relaxed) |
Increments the counter. Semantics: postincrement. | |
counter_type | inc (counter_type count, atomics::memory_order order=atomics::memory_order_relaxed) |
Increments the counter. Semantics: postincrement. | |
counter_type | dec (atomics::memory_order order=atomics::memory_order_relaxed) |
Decrements the counter. Semantics: postdecrement. | |
counter_type | dec (counter_type count, atomics::memory_order order=atomics::memory_order_relaxed) |
Decrements the counter. Semantics: postdecrement. | |
counter_type | operator++ () |
Preincrement. | |
counter_type | operator++ (int) |
Postincrement. | |
counter_type | operator-- () |
Predecrement. | |
counter_type | operator-- (int) |
Postdecrement. | |
counter_type | operator+= (counter_type count) |
Increment by count . | |
counter_type | operator-= (counter_type count) |
Decrement by count . | |
void | reset (atomics::memory_order order=atomics::memory_order_relaxed) |
Resets count to 0. | |
Atomic cache-friendly item counter.
Atomic item counter with cache-line padding to avoid false sharing. Adding cache-line padding before and after atomic counter eliminates the contention in read path of many containers and can notably improve search operations in sets/maps.