feat: SharedMutex is_locked; use of binary mtx

This commit is contained in:
Sara Gerretsen 2026-04-17 15:46:35 +02:00
parent 5b38bd6765
commit 847c341d9e
2 changed files with 13 additions and 2 deletions

View file

@ -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();
}

View file

@ -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 {