Some fix, check operator++

This commit is contained in:
marcelb 2025-04-09 22:42:21 +02:00
parent e659a78bd1
commit a5efeaf654
2 changed files with 10 additions and 9 deletions

View File

@ -38,11 +38,7 @@ map<K, uint64_t> Metrics<K>::get_data() const {
template<typename K>
map<K, uint64_t> Metrics<K>::get_data_and_clear() {
map<K, uint64_t> data;
{
shared_lock<shared_mutex> lock(mtx);
auto data = get_data();
}
map<K, uint64_t> data = get_data();
clear();
return data;
}
@ -57,9 +53,10 @@ template<typename K>
Metrics<K>& Metrics<K>::operator++(int n) {
shared_lock<shared_mutex> lock(mtx);
// Increment all counters by n as an example
for (auto& counter : counters) {
counter.second.fetch_add(n, memory_order_relaxed);
}
// for (auto& counter : counters) {
// counter.second.fetch_add(n, memory_order_relaxed);
// }
n++;
return *this;
}

View File

@ -65,7 +65,11 @@ int main() {
// map<string, uint64_t> MyStats = {{"access", 3},{ "error", 0}};
// stats.set(MyStats);
// // get and clear all counters
// auto dataWithClear = stats.get_data_and_clear();
auto dataWithClear = metrika.get_data_and_clear();
for (auto& [key, value] : dataWithClear) {
cout << "Log analitic " << key << ", value: " << value << endl;
}
return 0;
}