From 847c341d9e555573634d0da652eec2bd202a8127 Mon Sep 17 00:00:00 2001 From: Sara Date: Fri, 17 Apr 2026 15:46:35 +0200 Subject: [PATCH] feat: SharedMutex is_locked; use of binary mtx --- modules/terrain/shared_mutex.cpp | 10 ++++++++++ modules/terrain/shared_mutex.h | 5 +++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/modules/terrain/shared_mutex.cpp b/modules/terrain/shared_mutex.cpp index 0a5971e4..f52564a0 100644 --- a/modules/terrain/shared_mutex.cpp +++ b/modules/terrain/shared_mutex.cpp @@ -28,6 +28,16 @@ void SharedMutex::unlock_exclusive() { this->lock.unlock(); } +bool SharedMutex::is_locked() { + if (this->lock.try_lock()) { + bool locked{ this->shared_count != 0 }; + this->lock.unlock(); + return locked; + } else { + return false; + } +} + SharedMutex::LockExclusive::LockExclusive(SharedMutex &mutex) : mtx{ mutex } { this->mtx.lock_exclusive(); } diff --git a/modules/terrain/shared_mutex.h b/modules/terrain/shared_mutex.h index fcb0e6bd..3f47f998 100644 --- a/modules/terrain/shared_mutex.h +++ b/modules/terrain/shared_mutex.h @@ -7,10 +7,11 @@ struct SharedMutex { void unlock_shared(); void lock_exclusive(); void unlock_exclusive(); + bool is_locked(); private: - Mutex lock{}; - int shared_count{}; + BinaryMutex lock{}; + unsigned shared_count{}; public: class LockExclusive {