1 #ifndef LIBJMMCG_CORE_THREAD_SAFE_ADAPTORS_HPP
2 #define LIBJMMCG_CORE_THREAD_SAFE_ADAPTORS_HPP
24 #include <boost/mpl/assert.hpp>
52 : lock_(), have_work_() {
55 : lock_(), have_work_(&ev) {
56 assert(
dynamic_cast<atomic_t *>(have_work_));
59 : lock_(), have_work_(s.have_work_) {
63 assert(
dynamic_cast<atomic_t *>(have_work_));
67 assert(
dynamic_cast<locker_type
const *>(&lock_));
71 assert(
dynamic_cast<locker_type *>(&lock_));
102 assert(
dynamic_cast<atomic_t *>(have_work_));
103 return have_work_->try_lock();
142 assert(
dynamic_cast<atomic_t *>(have_work_));
145 : have_work_(s.have_work_) {
146 assert(
dynamic_cast<atomic_t *>(have_work_));
154 assert(
dynamic_cast<atomic_t *>(have_work_));
158 assert(
dynamic_cast<atomic_t *>(have_work_));
162 assert(
dynamic_cast<atomic_t
const *>(have_work_));
163 return have_work_->locker();
166 assert(
dynamic_cast<atomic_t *>(have_work_));
167 return have_work_->locker();
171 assert(
dynamic_cast<atomic_t *>(have_work_));
172 typename lock_traits::atomic_state_type
const ret=have_work_->set_nolk(
atomic_t::states::new_work_arrived);
178 for (
typename atomic_t::count_type i=0; i<c; ++i) {
199 typename WL=
typename M::write_lock_type,
201 class MLk=
typename lock::
any_order::
all<M::lock_traits::api_type,
typename M::lock_traits::model_type, M, M>
260 template<
class T1,
class T2>
306 template<
typename M1,
typename WL1,
class Sig1,
class MLk1>
331 typename WL=
typename M::write_lock_type,
333 class ValRet=
typename QT::value_type,
334 class MLk=
typename lock::
any_order::
all<M::lock_traits::api_type,
typename M::lock_traits::model_type, M, M>
443 typename WL=
typename M::write_lock_type,
445 class ValRet=
typename QT::value_type,
446 class MLk=
typename lock::
any_order::
all<M::lock_traits::api_type,
typename M::lock_traits::model_type, M, M>
458 using scoped_lock=
typename lock_traits::
template scoped_lock<T...>;
605 void __fastcall pop_nochk_nolk()
noexcept(
false)
FORCE_INLINE;