aboutsummaryrefslogtreecommitdiff
path: root/src/threading.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2023-01-02 16:56:05 +0000
committergingerBill <bill@gingerbill.org>2023-01-02 16:56:05 +0000
commitc293f5b7ebc3b733e996a97c6e32d678f13b3ee5 (patch)
tree41935353d5e02213733dd846cf7b3f46a20703fe /src/threading.cpp
parentfa562ec5d60319f5cd7e85bb337bd21feb7ceeb8 (diff)
Remove unneeded mutex
Diffstat (limited to 'src/threading.cpp')
-rw-r--r--src/threading.cpp17
1 files changed, 9 insertions, 8 deletions
diff --git a/src/threading.cpp b/src/threading.cpp
index 4c7aa8f92..c5db5d1b4 100644
--- a/src/threading.cpp
+++ b/src/threading.cpp
@@ -77,22 +77,23 @@ gb_internal void yield_process(void);
struct MutexGuard {
- MutexGuard() = delete;
+ MutexGuard() = delete;
MutexGuard(MutexGuard const &) = delete;
+ MutexGuard(MutexGuard &&) = delete;
- MutexGuard(BlockingMutex *bm) : bm{bm} {
+ explicit MutexGuard(BlockingMutex *bm) noexcept : bm{bm} {
mutex_lock(this->bm);
}
- MutexGuard(RecursiveMutex *rm) : rm{rm} {
+ explicit MutexGuard(RecursiveMutex *rm) noexcept : rm{rm} {
mutex_lock(this->rm);
}
- MutexGuard(BlockingMutex &bm) : bm{&bm} {
+ explicit MutexGuard(BlockingMutex &bm) noexcept : bm{&bm} {
mutex_lock(this->bm);
}
- MutexGuard(RecursiveMutex &rm) : rm{&rm} {
+ explicit MutexGuard(RecursiveMutex &rm) noexcept : rm{&rm} {
mutex_lock(this->rm);
}
- ~MutexGuard() {
+ ~MutexGuard() noexcept {
if (this->bm) {
mutex_unlock(this->bm);
} else if (this->rm) {
@@ -100,14 +101,14 @@ struct MutexGuard {
}
}
- operator bool() const { return true; }
+ operator bool() const noexcept { return true; }
BlockingMutex *bm;
RecursiveMutex *rm;
};
#define MUTEX_GUARD_BLOCK(m) if (MutexGuard GB_DEFER_3(_mutex_guard_){m})
-#define MUTEX_GUARD(m) MutexGuard GB_DEFER_3(_mutex_guard_){m}
+#define MUTEX_GUARD(m) mutex_lock(m); defer (mutex_unlock(m))
struct RecursiveMutex {