lean cpp library
A lean C++ library providing efficient utility classes for high-performance C++ applications.
|
Implements a shareable spin lock that is NOT reentrant. More...
#include <shareable_spin_lock.h>
Inherits noncopyable.
Public Member Functions | |
shareable_spin_lock () | |
Constructs a shareable spin lock. | |
LEAN_INLINE bool | try_lock () |
Tries to exclusively lock this spin lock, returning false if currently locked / shared by another user. | |
LEAN_INLINE bool | try_upgrade_lock () |
Tries to atomically upgrade shared ownership of this spin lock to exclusive ownership, returning false if currently shared with another user. | |
LEAN_INLINE void | lock () |
Exclusively locks this spin lock, returning immediately on success, otherwise waiting for the lock to become available. | |
LEAN_INLINE void | upgrade_lock () |
Atomically upgrades shared ownership of this spin lock to exclusive ownership, returning immediately on success, otherwise waiting for the lock to become available. | |
LEAN_INLINE void | downgrade_lock () |
Atomically releases exclusive ownership and re-acquires shared ownership, permitting waiting threads to continue execution. | |
LEAN_INLINE void | unlock () |
Unlocks this spin lock, permitting waiting threads to continue execution. | |
LEAN_INLINE bool | try_lock_shared () |
Tries to obtain shared ownership of this spin lock, returning false if currently locked exclusively by another user. | |
LEAN_INLINE void | lock_shared () |
Obtains shared ownership of this spin lock, returning immediately on success, otherwise waiting for the lock to become available. | |
LEAN_INLINE void | unlock_shared () |
Releases shared ownership of this spin lock, permitting waiting threads to continue execution. |
Implements a shareable spin lock that is NOT reentrant.