23 assert(
dynamic_cast<lockable *>(
this));
27 template<
class Lk>
inline
32 template<
class Lk>
inline bool
34 assert(
dynamic_cast<atomic_t *>(&lk));
38 template<
class Lk>
inline void
40 [[maybe_unused]]
const typename atomic_t::atomic_state_type ret=lk.lock();
41 assert(ret==atomic_t::atom_set);
44 template<
class Lk>
inline void
49 template<
class LockObject>
inline
56 assert(
dynamic_cast<atomic_t *>(&locker));
62 assert(
dynamic_cast<atomic_t *>(&locker));
68 assert(
dynamic_cast<atomic_t *>(&locker));
69 return locker.lock(period);
74 assert(
dynamic_cast<atomic_t *>(&locker));
78 template<
class LockObject>
inline
81 [[maybe_unused]]
const typename atomic_t::atomic_state_type ret=lock(period);
82 assert(ret==atomic_t::lock_traits::atom_set);
85 template<
class LockObject>
inline
90 template<
class LockObject>
inline void
92 assert(
dynamic_cast<atomic_t *>(&locker));
96 template<
class LockObject>
inline
101 template<
class LockObject>
inline
107 assert(
dynamic_cast<atomic_t *>(&
this->locker));
108 return this->locker.try_lock();
113 assert(
dynamic_cast<atomic_t *>(&
this->locker));
114 return this->locker.lock();
119 assert(
dynamic_cast<atomic_t *>(&
this->locker));
120 return this->locker.lock(period);
125 assert(
dynamic_cast<atomic_t *>(&
this->locker));
126 return this->locker.unlock();
129 template<
class LockObject>
inline void
131 assert(
dynamic_cast<atomic_t *>(&
this->locker));
132 return this->locker.decay();
135 template<
class LockObject>
inline
137 : locker(lo), locked(
false) {
140 template<
class LockObject>
inline
142 : locker(lo), locked(
false) {
143 const typename atomic_t::atomic_state_type ret=
this->locker.lock(period);
144 locked=(ret==
atomic_t::lock_traits::atom_set);
149 assert(
dynamic_cast<atomic_t *>(&
this->locker));
151 return this->locker.unlock();
154 template<
class LockObject>
inline
164 assert(
dynamic_cast<atomic_t *>(&
this->locker));
165 const typename atomic_t::atomic_state_type ret=
this->locker.try_lock();
166 locked=(ret==
atomic_t::lock_traits::atom_set);
170 template<
class LockObject>
inline void
172 assert(
dynamic_cast<atomic_t *>(&
this->locker));
174 return this->locker.decay();
182 boost::lock(lk1, lk2);
186 all<API_,Mdl_,Lk1,Lk2>::~
all()
noexcept(
true) {
198 return boost::try_lock(lk1,lk2);