From b958d407f1467cf4c314fe81ee1e9249853f13af Mon Sep 17 00:00:00 2001 From: Artur Mukhamadiev Date: Mon, 23 Jun 2025 00:07:24 +0300 Subject: [PATCH] maybe no atomic on active? --- include/logger.hh | 2 ++ src/logger.cc | 2 ++ 2 files changed, 4 insertions(+) diff --git a/include/logger.hh b/include/logger.hh index 7dc4a03..d27c064 100644 --- a/include/logger.hh +++ b/include/logger.hh @@ -34,6 +34,7 @@ class Logger { typename = std::enable_if_t>> void add(const std::string& field, Metric metric) { auto locked = active.load(); + // auto locked = active; auto it = locked->find(field); if (it == locked->end()) { throw configErrorMsg; @@ -50,6 +51,7 @@ class Logger { std::unique_ptr worker; std::shared_ptr m1, m2; std::atomic> active; // impl may use mutex! + // std::shared_ptr active; }; } // namespace vptyp \ No newline at end of file diff --git a/src/logger.cc b/src/logger.cc index a5bcf3a..301cc8c 100644 --- a/src/logger.cc +++ b/src/logger.cc @@ -62,10 +62,12 @@ void Logger::Worker::unroll() { return; auto tmp = parent.active.load(); + // auto tmp = parent.active; auto toBeActive = tmp == parent.m1 ? parent.m2 : parent.m1; while (!parent.active.compare_exchange_weak(tmp, toBeActive)) { std::this_thread::yield(); } + // parent.active = toBeActive; while (tmp.use_count() > 2) { std::this_thread::yield();