From f03319c33429376d333510058579b7ead6241aec Mon Sep 17 00:00:00 2001 From: Tony Butler <spudz76@gmail.com> Date: Sat, 22 Sep 2018 09:08:30 -0600 Subject: [PATCH] telemetry: Add mutex to avoid push during recalc and other races --- xmrstak/misc/telemetry.cpp | 2 ++ xmrstak/misc/telemetry.hpp | 2 ++ 2 files changed, 4 insertions(+) diff --git a/xmrstak/misc/telemetry.cpp b/xmrstak/misc/telemetry.cpp index 5642f6b..197da8e 100644 --- a/xmrstak/misc/telemetry.cpp +++ b/xmrstak/misc/telemetry.cpp @@ -49,6 +49,7 @@ telemetry::telemetry(size_t iThd) double telemetry::calc_telemetry_data(size_t iLastMillisec, size_t iThread) { + std::unique_lock<std::mutex> lk(mtx); uint64_t iTimeNow = get_timestamp_ms(); uint64_t iEarliestHashCnt = 0; @@ -98,6 +99,7 @@ double telemetry::calc_telemetry_data(size_t iLastMillisec, size_t iThread) void telemetry::push_perf_value(size_t iThd, uint64_t iHashCount, uint64_t iTimestamp) { + std::unique_lock<std::mutex> lk(mtx); size_t iTop = iBucketTop[iThd]; ppHashCounts[iThd][iTop] = iHashCount; ppTimestamps[iThd][iTop] = iTimestamp; diff --git a/xmrstak/misc/telemetry.hpp b/xmrstak/misc/telemetry.hpp index 309fd6d..1813c00 100644 --- a/xmrstak/misc/telemetry.hpp +++ b/xmrstak/misc/telemetry.hpp @@ -2,6 +2,7 @@ #include <cstdint> #include <cstring> +#include <mutex> namespace xmrstak { @@ -14,6 +15,7 @@ public: double calc_telemetry_data(size_t iLastMillisec, size_t iThread); private: + mutable std::mutex mtx; constexpr static size_t iBucketSize = 2 << 11; //Power of 2 to simplify calculations constexpr static size_t iBucketMask = iBucketSize - 1; uint32_t* iBucketTop; -- GitLab