7#include "wfree_unordered_map.hpp"
8#include "os_detect.hpp"
9#include "fixed_string.hpp"
17constexpr int MAX_NR_COUNTERS = 1024;
21 int64_t previous_value;
30template<basic_fixed_
string Tag>
35 tt_no_inline
void add_to_map()
const noexcept
40 int64_t increment()
const noexcept
42 ttlet value = counter.
fetch_add(1, std::memory_order_relaxed);
45 [[unlikely]] add_to_map();
51 [[nodiscard]] int64_t read()
const noexcept
53 return counter.
load(std::memory_order_relaxed);
59template<basic_fixed_
string Tag>
60inline int64_t increment_counter() noexcept
65template<basic_fixed_
string Tag>
66[[nodiscard]]
inline int64_t read_counter() noexcept
68 return counter_functor<Tag>{}.read();
76 auto &item = counter_map[tag];
78 ttlet *
const count_ptr = item.counter;
79 ttlet
count = count_ptr !=
nullptr ? item.counter->load(std::memory_order_relaxed) : 0;
80 ttlet count_since_last_read =
count - item.previous_value;
81 item.previous_value =
count;
82 return {
count, count_since_last_read};
Definition counters.hpp:19
Definition counters.hpp:31
Definition wfree_unordered_map.hpp:56