diff options
Diffstat (limited to 'core/os/rw_lock.h')
| -rw-r--r-- | core/os/rw_lock.h | 30 |
1 files changed, 16 insertions, 14 deletions
diff --git a/core/os/rw_lock.h b/core/os/rw_lock.h index 7b232600b7..a232fcb1ce 100644 --- a/core/os/rw_lock.h +++ b/core/os/rw_lock.h @@ -31,39 +31,41 @@ #ifndef RW_LOCK_H #define RW_LOCK_H +#include "core/typedefs.h" + #include <shared_mutex> class RWLock { mutable std::shared_timed_mutex mutex; public: - // Lock the rwlock, block if locked by someone else - void read_lock() const { + // Lock the RWLock, block if locked by someone else. + _ALWAYS_INLINE_ void read_lock() const { mutex.lock_shared(); } - // Unlock the rwlock, let other threads continue - void read_unlock() const { + // Unlock the RWLock, let other threads continue. + _ALWAYS_INLINE_ void read_unlock() const { mutex.unlock_shared(); } // Attempt to lock the RWLock for reading. True on success, false means it can't lock. - bool read_try_lock() const { + _ALWAYS_INLINE_ bool read_try_lock() const { return mutex.try_lock_shared(); } - // Lock the rwlock, block if locked by someone else - void write_lock() { + // Lock the RWLock, block if locked by someone else. + _ALWAYS_INLINE_ void write_lock() { mutex.lock(); } - // Unlock the rwlock, let other thwrites continue - void write_unlock() { + // Unlock the RWLock, let other threads continue. + _ALWAYS_INLINE_ void write_unlock() { mutex.unlock(); } // Attempt to lock the RWLock for writing. True on success, false means it can't lock. - bool write_try_lock() { + _ALWAYS_INLINE_ bool write_try_lock() { return mutex.try_lock(); } }; @@ -72,11 +74,11 @@ class RWLockRead { const RWLock &lock; public: - RWLockRead(const RWLock &p_lock) : + _ALWAYS_INLINE_ RWLockRead(const RWLock &p_lock) : lock(p_lock) { lock.read_lock(); } - ~RWLockRead() { + _ALWAYS_INLINE_ ~RWLockRead() { lock.read_unlock(); } }; @@ -85,11 +87,11 @@ class RWLockWrite { RWLock &lock; public: - RWLockWrite(RWLock &p_lock) : + _ALWAYS_INLINE_ RWLockWrite(RWLock &p_lock) : lock(p_lock) { lock.write_lock(); } - ~RWLockWrite() { + _ALWAYS_INLINE_ ~RWLockWrite() { lock.write_unlock(); } }; |
