diff options
author | Sergey Polovko <sergey@polovko.me> | 2022-02-10 16:47:03 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:47:03 +0300 |
commit | 2e714b5ebd40a1f4cc31c27f1ad6e49ca6d895f5 (patch) | |
tree | b83306b6e37edeea782e9eed673d89286c4fef35 /library/cpp/monlib/metrics/atomics_array.h | |
parent | 3e0b762a82514bac89c1dd6ea7211e381d8aa248 (diff) | |
download | ydb-2e714b5ebd40a1f4cc31c27f1ad6e49ca6d895f5.tar.gz |
Restoring authorship annotation for Sergey Polovko <sergey@polovko.me>. Commit 2 of 2.
Diffstat (limited to 'library/cpp/monlib/metrics/atomics_array.h')
-rw-r--r-- | library/cpp/monlib/metrics/atomics_array.h | 76 |
1 files changed, 38 insertions, 38 deletions
diff --git a/library/cpp/monlib/metrics/atomics_array.h b/library/cpp/monlib/metrics/atomics_array.h index c9193f0a33..f19aebf291 100644 --- a/library/cpp/monlib/metrics/atomics_array.h +++ b/library/cpp/monlib/metrics/atomics_array.h @@ -1,52 +1,52 @@ -#pragma once - -#include <util/generic/ptr.h> -#include <util/generic/vector.h> - +#pragma once + +#include <util/generic/ptr.h> +#include <util/generic/vector.h> + #include <atomic> -namespace NMonitoring { - class TAtomicsArray { - public: - explicit TAtomicsArray(size_t size) +namespace NMonitoring { + class TAtomicsArray { + public: + explicit TAtomicsArray(size_t size) : Values_(new std::atomic<ui64>[size]) - , Size_(size) - { - for (size_t i = 0; i < Size_; i++) { + , Size_(size) + { + for (size_t i = 0; i < Size_; i++) { Values_[i].store(0, std::memory_order_relaxed); - } - } - - ui64 operator[](size_t index) const noexcept { - Y_VERIFY_DEBUG(index < Size_); + } + } + + ui64 operator[](size_t index) const noexcept { + Y_VERIFY_DEBUG(index < Size_); return Values_[index].load(std::memory_order_relaxed); - } - - size_t Size() const noexcept { - return Size_; - } - - void Add(size_t index, ui32 count) noexcept { - Y_VERIFY_DEBUG(index < Size_); + } + + size_t Size() const noexcept { + return Size_; + } + + void Add(size_t index, ui32 count) noexcept { + Y_VERIFY_DEBUG(index < Size_); Values_[index].fetch_add(count, std::memory_order_relaxed); - } - + } + void Reset() noexcept { for (size_t i = 0; i < Size_; i++) { Values_[i].store(0, std::memory_order_relaxed); } } - TVector<ui64> Copy() const { - TVector<ui64> copy(Reserve(Size_)); - for (size_t i = 0; i < Size_; i++) { + TVector<ui64> Copy() const { + TVector<ui64> copy(Reserve(Size_)); + for (size_t i = 0; i < Size_; i++) { copy.push_back(Values_[i].load(std::memory_order_relaxed)); - } - return copy; - } - - private: + } + return copy; + } + + private: TArrayHolder<std::atomic<ui64>> Values_; - size_t Size_; - }; -} + size_t Size_; + }; +} |