|
DART 6.12.2
|
MultiLockableReference references multiple lockables. More...
#include <LockableReference.hpp>
Public Types | |
| using | Lockable = LockableT |
Public Member Functions | |
| template<typename InputIterator > | |
| MultiLockableReference (std::weak_ptr< const void > lockableHolder, InputIterator first, InputIterator last) | |
| Constructs from multiple lockables. | |
| void | lock () override |
| Locks lockable that this class references; blocks if one of the lockables are not avaliable. | |
| bool | try_lock () noexcept override |
| Tries to lock the lockables that this class references; returns false if one of the lockables is not avaliable. | |
| void | unlock () noexcept override |
| Unlocks the lockables. | |
Private Member Functions | |
| template<typename T > | |
| T * | ptr (T &obj) |
| Converts reference to pointer. | |
| template<typename T > | |
| T * | ptr (T *obj) |
| Returns pointer as it is. | |
Private Attributes | |
| std::weak_ptr< const void > | mLockableHolder |
| Weak pointer to the lockable holder. | |
| std::vector< Lockable * > | mLockables |
| lockables this class references. | |
MultiLockableReference references multiple lockables.
MultiLockableReference acquires the locks in the specified order, which means it is the user's responsibility to sort the collection to avoid deadlock.
| LockableT | The standard C++ Lockable concept object type. |
| using dart::common::MultiLockableReference< LockableT >::Lockable = LockableT |
| dart::common::MultiLockableReference< Lockable >::MultiLockableReference | ( | std::weak_ptr< const void > | lockableHolder, |
| InputIterator | first, | ||
| InputIterator | last | ||
| ) |
Constructs from multiple lockables.
| [in] | lockableHolder | Weak pointer to an object that holds the lockables. This is used to lock/unlock this lockable only when the lockable holder is not destructed. |
| [in] | first | First iterator of lockable to be added to this class. |
| [in] | last | Last iterator of lockable to be added to this class. |
|
overridevirtual |
Locks lockable that this class references; blocks if one of the lockables are not avaliable.
Implements dart::common::LockableReference.
|
private |
Converts reference to pointer.
|
private |
Returns pointer as it is.
|
overridevirtualnoexcept |
Tries to lock the lockables that this class references; returns false if one of the lockables is not avaliable.
Implements dart::common::LockableReference.
|
overridevirtualnoexcept |
Unlocks the lockables.
Implements dart::common::LockableReference.
|
private |
Weak pointer to the lockable holder.
|
private |
lockables this class references.