RAII helper to use BasicLockable locks with thread safety lock annotations with more capabilities than std::lock_guard.
std::lock_guard RAII helper is recommended by default due to additional member overhead. pw::ScopedLocker should only be used if more complex lock management is required where RAII alone is insufficient.Unlike a std::lock_guard and std::scoped_lock, this helper can be constructed with the lock deferred. In addition, this does not support std::lock deadlock avoidance algorithm nor lock adoption from std::scoped_lock.
Lastly this supports explicit lock() and unlock() like std::unique_lock, however unlike std::unique_lock, pw::ScopedLocker does not support the use of Lockables's conditional lock acquisition, try_lock(). This means that this supports thread safety lock annotations unlike std::unique_lock.
Public Member Functions | |
| ScopedLocker (BasicLockable &lock) noexcept | |
| ScopedLocker (BasicLockable &lock, std::defer_lock_t) noexcept | |
| ScopedLocker (const ScopedLocker &)=delete | |
| ScopedLocker (ScopedLocker &&)=delete | |
| ScopedLocker & | operator= (const ScopedLocker &)=delete |
| ScopedLocker & | operator= (ScopedLocker &&)=delete |
| void | lock () |
| void | unlock () |