ORIGINAL
Loading...
Searching...
No Matches
original::multiLock< MUTEX > Class Template Referencefinal

RAII wrapper for multiple mutex locking. More...

#include <mutex.h>

Inheritance diagram for original::multiLock< MUTEX >:
Inheritance graph
Collaboration diagram for original::multiLock< MUTEX >:
Collaboration graph

Public Member Functions

 multiLock (MUTEX &... mutex)
 Constructs a multiLock with AUTO_LOCK policy.
 
 multiLock (lockPolicy policy, MUTEX &... mutex)
 Constructs a multiLock with specified policy.
 
bool isLocked () const noexcept override
 Checks if all mutexes are currently locked.
 
void lock () override
 Locks all managed mutexes.
 
bool tryLock () override
 Attempts to lock all managed mutexes without blocking.
 
void unlock () override
 Unlocks all managed mutexes.
 
 multiLock (multiLock &&)=delete
 Deleted move constructor.
 
multiLockoperator= (multiLock &&)=delete
 Deleted move assignment operator.
 
 ~multiLock () override
 Destructor - automatically unlocks all if locked.
 
- Public Member Functions inherited from original::lockGuard
 lockGuard ()=default
 Default constructor.
 
 lockGuard (const lockGuard &)=delete
 Deleted copy constructor.
 
lockGuardoperator= (const lockGuard &)=delete
 Deleted copy assignment operator.
 
virtual ~lockGuard ()=default
 Virtual destructor.
 

Additional Inherited Members

- Public Types inherited from original::lockGuard
enum class  lockPolicy { MANUAL_LOCK , AUTO_LOCK , TRY_LOCK , ADOPT_LOCK }
 Locking policies for guard construction. More...
 
- Static Public Attributes inherited from original::lockGuard
static constexpr auto MANUAL_LOCK = lockPolicy::MANUAL_LOCK
 Constant for manual lock policy.
 
static constexpr auto AUTO_LOCK = lockPolicy::AUTO_LOCK
 Constant for automatic lock policy.
 
static constexpr auto TRY_LOCK = lockPolicy::TRY_LOCK
 Constant for try-lock policy.
 
static constexpr auto ADOPT_LOCK = lockPolicy::ADOPT_LOCK
 Constant for adopt lock policy.
 
- Protected Member Functions inherited from original::lockGuard

Detailed Description

template<typename... MUTEX>
class original::multiLock< MUTEX >

RAII wrapper for multiple mutex locking.

Template Parameters
MUTEXVariadic template parameter pack for mutex types

Provides scoped lock management for multiple mutexes with deadlock avoidance and various locking policies.

Constructor & Destructor Documentation

◆ multiLock() [1/2]

template<typename... MUTEX>
original::multiLock< MUTEX >::multiLock ( MUTEX &... mutex)
explicit

Constructs a multiLock with AUTO_LOCK policy.

Parameters
mutexReferences to mutexes to manage

◆ multiLock() [2/2]

template<typename... MUTEX>
original::multiLock< MUTEX >::multiLock ( lockPolicy policy,
MUTEX &... mutex )
explicit

Constructs a multiLock with specified policy.

Parameters
policyLocking policy to use
mutexReferences to mutexes to manage

Member Function Documentation

◆ isLocked()

template<typename... MUTEX>
bool original::multiLock< MUTEX >::isLocked ( ) const
nodiscardoverridevirtualnoexcept

Checks if all mutexes are currently locked.

Returns
true if all locked, false otherwise

Implements original::lockGuard.

◆ lock()

template<typename... MUTEX>
void original::multiLock< MUTEX >::lock ( )
overridevirtual

Locks all managed mutexes.

Exceptions
sysErrorif already locked or locking fails

Implements original::lockGuard.

◆ tryLock()

template<typename... MUTEX>
bool original::multiLock< MUTEX >::tryLock ( )
overridevirtual

Attempts to lock all managed mutexes without blocking.

Returns
true if all locks were acquired, false otherwise
Exceptions
sysErrorif already locked or operation fails

Implements original::lockGuard.

◆ unlock()

template<typename... MUTEX>
void original::multiLock< MUTEX >::unlock ( )
overridevirtual

Unlocks all managed mutexes.

Exceptions
sysErrorif not locked or unlock fails

Implements original::lockGuard.


The documentation for this class was generated from the following file: