feat: SharedMutex is_locked; use of binary mtx
This commit is contained in:
parent
5b38bd6765
commit
847c341d9e
2 changed files with 13 additions and 2 deletions
|
|
@ -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();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue