From 2ccbd2f307a8f2e8292fe796a74a64d853ac43e8 Mon Sep 17 00:00:00 2001 From: Russell Gilbert Date: Wed, 11 Feb 2026 07:56:57 +0000 Subject: [PATCH] Uses atomic booleans for thread safety Replaces mutex with atomic booleans in DixonNodeState for improved thread safety. This eliminates the need for explicit locking in the connected_ and brainRunning_ accessors, reducing overhead and potential for deadlocks. Updates version file. --- src/RobotNode/DixonNodeState.cpp | 4 ---- src/RobotNode/DixonNodeState.h | 7 +++---- src/RobotNode/version.txt | 2 +- 3 files changed, 4 insertions(+), 9 deletions(-) diff --git a/src/RobotNode/DixonNodeState.cpp b/src/RobotNode/DixonNodeState.cpp index 7fe544f..1b50986 100644 --- a/src/RobotNode/DixonNodeState.cpp +++ b/src/RobotNode/DixonNodeState.cpp @@ -8,24 +8,20 @@ DixonNodeState& DixonNodeState::instance() void DixonNodeState::setConnected(bool value) { - std::lock_guard lock(mutex_); connected_ = value; } bool DixonNodeState::isConnected() const { - std::lock_guard lock(mutex_); return connected_; } void DixonNodeState::setBrainRunning(bool value) { - std::lock_guard lock(mutex_); brainRunning_ = value; } bool DixonNodeState::isBrainRunning() const { - std::lock_guard lock(mutex_); return brainRunning_; } \ No newline at end of file diff --git a/src/RobotNode/DixonNodeState.h b/src/RobotNode/DixonNodeState.h index f062aee..c64f598 100644 --- a/src/RobotNode/DixonNodeState.h +++ b/src/RobotNode/DixonNodeState.h @@ -1,5 +1,5 @@ #pragma once -#include +#include class DixonNodeState { @@ -21,7 +21,6 @@ private: DixonNodeState() = default; ~DixonNodeState() = default; - mutable std::mutex mutex_; - bool connected_ = false; - bool brainRunning_ = false; + std::atomic connected_ = false; + std::atomic brainRunning_ = false; }; \ No newline at end of file diff --git a/src/RobotNode/version.txt b/src/RobotNode/version.txt index 437d26b..492b167 100644 --- a/src/RobotNode/version.txt +++ b/src/RobotNode/version.txt @@ -1 +1 @@ -1.0.10 \ No newline at end of file +1.0.12 \ No newline at end of file