libjmmcg  release_579_6_g8cffd
A C++ library containing an eclectic mix of useful, advanced components.
jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::queue< QT, M, WL, Sig, ValRet, MLk > Class Template Reference

An adaptor to add thread-safety assistance, specifically for queues. More...

#include <thread_safe_adaptors.hpp>

Inherits QT.

Collaboration diagram for jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::queue< QT, M, WL, Sig, ValRet, MLk >:
[legend]

Public Types

typedef QT container_type
 The queue to be adapted, usually std::list or std::queue. More...
 
typedef Sig have_work_type
 Used to enable functionality to atomically signal if the container contains work or not. More...
 
typedef M atomic_t
 The underlying lock object to use. More...
 
typedef WL write_lock_type
 The type of write-lock to use. This allows the possibility of using a read-write lock. More...
 
typedef atomic_t::read_lock_type read_lock_type
 The type of read lock to use, by default the write lock. This allows the possibility of using a read-write lock. More...
 
typedef MLk lock_all_type
 The multi-lock type to use to ensured that operations on combined queues are thread-safe. Note that locking them in any order reduces the likelihood of deadlock at the cost of performance. More...
 
typedef write_lock_type::lock_traits lock_traits
 
typedef api_threading_traits< lock_traits::api_type, typename lock_traits::model_type > thread_traits
 
typedef container_type::reference reference
 
typedef container_type::const_reference const_reference
 
typedef container_type::size_type size_type
 
typedef container_type::value_type value_type
 
typedef ValRet value_ret_type
 The type to return when removing items from the queue. More...
 
typedef lock_traits::exception_type exception_type
 

Public Member Functions

 BOOST_MPL_ASSERT ((std::is_same< typename write_lock_type::atomic_t, atomic_t >))
 
atomic_t &__fastcall pop_lock () noexcept(true) FORCE_INLINE
 A flag to atomically signal if the container contains work or not, and how much work and the underlying lock, to assist in writing thread-safe code. More...
 
atomic_t &__fastcall pop_lock () const noexcept(true) FORCE_INLINE
 A flag to atomically signal if the container contains work or not, and how much work and the underlying lock, to assist in writing thread-safe code. More...
 
atomic_t &__fastcall push_lock () noexcept(true) FORCE_INLINE
 A flag to atomically signal if the container contains work or not, and how much work and the underlying lock, to assist in writing thread-safe code. More...
 
atomic_t &__fastcall push_lock () const noexcept(true) FORCE_INLINE
 A flag to atomically signal if the container contains work or not, and how much work and the underlying lock, to assist in writing thread-safe code. More...
 
__stdcall queue () noexcept(noexcept(container_type()) &&noexcept(have_work_type())) FORCE_INLINE
 
 queue (typename have_work_type::atomic_t &) FORCE_INLINE
 
__stdcall queue (queue const &) noexcept(false) FORCE_INLINE
 
__stdcall ~queue () noexcept(true) FORCE_INLINE
 
queue &__fastcall operator= (queue const &) noexcept(false) FORCE_INLINE
 
bool __fastcall empty () const noexcept(true) FORCE_INLINE
 
size_type __fastcall sync_size () const noexcept(false) FORCE_INLINE
 
size_type __fastcall size () const noexcept(true) FORCE_INLINE
 
value_type __fastcall front () const noexcept(false) FORCE_INLINE
 
void __fastcall push_back (value_type const &v) noexcept(false) FORCE_INLINE
 
void __fastcall push_back (value_type &&v) noexcept(false) FORCE_INLINE
 
value_ret_type __fastcall pop_front () noexcept(false) FORCE_INLINE
 
void __fastcall push_front (const value_type &v) noexcept(false) FORCE_INLINE
 
void __fastcall push_front (value_type &&v) noexcept(false) FORCE_INLINE
 
size_type __fastcall erase (const value_type &v) noexcept(false) FORCE_INLINE
 
void __fastcall clear () noexcept(false) FORCE_INLINE
 
container_type const & colln () const noexcept(true) FORCE_INLINE
 
container_typecolln () noexcept(true) FORCE_INLINE
 
value_ret_type __fastcall pop_front_nolk () noexcept(false) FORCE_INLINE
 
value_type __fastcall pop_front_1_nochk_nolk () noexcept(noexcept(have_work.remove())) FORCE_INLINE
 
value_type __fastcall pop_front_1_nochk_nosig () noexcept(true) FORCE_INLINE
 

Public Attributes

have_work_type have_work
 A flag to atomically signal if the container contains work or not, and how much work and the underlying lock, to assist in writing thread-safe code. More...
 

Static Public Attributes

static constexpr generic_traits::memory_access_modes memory_access_mode
 

Protected Member Functions

virtual value_ret_type __fastcall pop_front_nochk_nolk () noexcept(false) FORCE_INLINE
 

Detailed Description

template<typename QT, typename M, typename WL = typename M::write_lock_type, class Sig = no_signalling<M>, class ValRet = typename QT::value_type, class MLk = typename lock::any_order::all<M::lock_traits::api_type, typename M::lock_traits::model_type, M, M>>
class jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::queue< QT, M, WL, Sig, ValRet, MLk >

An adaptor to add thread-safety assistance, specifically for queues.

Note that this adaptor relies on the standardised behaviour of a sequence (or an adaptor thereof) with respect to invalidating iterators when items are added to or removed from removed from the container. Basically only std::list is guaranteed to satisfy these requirements, but std::queue often does, but that is implementation-dependent. This queue operates with one big fat lock. The iterators are not exposed to assist with writing thread-safe code. Note that if the read_lock_type and write_lock_types are the same, i.e. an exclusive lock were used, then the adaptor will exhibit EREW semantics. If a read-writer lock is used for them, then it will exhibit CREW semantics.

See also
safe_colln, funky_queue

Definition at line 336 of file thread_safe_adaptors.hpp.

Member Typedef Documentation

◆ atomic_t

template<typename QT , typename M , typename WL = typename M::write_lock_type, class Sig = no_signalling<M>, class ValRet = typename QT::value_type, class MLk = typename lock::any_order::all<M::lock_traits::api_type, typename M::lock_traits::model_type, M, M>>
typedef M jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::queue< QT, M, WL, Sig, ValRet, MLk >::atomic_t

The underlying lock object to use.

Definition at line 340 of file thread_safe_adaptors.hpp.

◆ const_reference

template<typename QT , typename M , typename WL = typename M::write_lock_type, class Sig = no_signalling<M>, class ValRet = typename QT::value_type, class MLk = typename lock::any_order::all<M::lock_traits::api_type, typename M::lock_traits::model_type, M, M>>
typedef container_type::const_reference jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::queue< QT, M, WL, Sig, ValRet, MLk >::const_reference

Definition at line 347 of file thread_safe_adaptors.hpp.

◆ container_type

template<typename QT , typename M , typename WL = typename M::write_lock_type, class Sig = no_signalling<M>, class ValRet = typename QT::value_type, class MLk = typename lock::any_order::all<M::lock_traits::api_type, typename M::lock_traits::model_type, M, M>>
typedef QT jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::queue< QT, M, WL, Sig, ValRet, MLk >::container_type

The queue to be adapted, usually std::list or std::queue.

Definition at line 338 of file thread_safe_adaptors.hpp.

◆ exception_type

template<typename QT , typename M , typename WL = typename M::write_lock_type, class Sig = no_signalling<M>, class ValRet = typename QT::value_type, class MLk = typename lock::any_order::all<M::lock_traits::api_type, typename M::lock_traits::model_type, M, M>>
typedef lock_traits::exception_type jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::queue< QT, M, WL, Sig, ValRet, MLk >::exception_type

Definition at line 351 of file thread_safe_adaptors.hpp.

◆ have_work_type

template<typename QT , typename M , typename WL = typename M::write_lock_type, class Sig = no_signalling<M>, class ValRet = typename QT::value_type, class MLk = typename lock::any_order::all<M::lock_traits::api_type, typename M::lock_traits::model_type, M, M>>
typedef Sig jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::queue< QT, M, WL, Sig, ValRet, MLk >::have_work_type

Used to enable functionality to atomically signal if the container contains work or not.

Definition at line 339 of file thread_safe_adaptors.hpp.

◆ lock_all_type

template<typename QT , typename M , typename WL = typename M::write_lock_type, class Sig = no_signalling<M>, class ValRet = typename QT::value_type, class MLk = typename lock::any_order::all<M::lock_traits::api_type, typename M::lock_traits::model_type, M, M>>
typedef MLk jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::queue< QT, M, WL, Sig, ValRet, MLk >::lock_all_type

The multi-lock type to use to ensured that operations on combined queues are thread-safe. Note that locking them in any order reduces the likelihood of deadlock at the cost of performance.

Definition at line 343 of file thread_safe_adaptors.hpp.

◆ lock_traits

template<typename QT , typename M , typename WL = typename M::write_lock_type, class Sig = no_signalling<M>, class ValRet = typename QT::value_type, class MLk = typename lock::any_order::all<M::lock_traits::api_type, typename M::lock_traits::model_type, M, M>>
typedef write_lock_type::lock_traits jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::queue< QT, M, WL, Sig, ValRet, MLk >::lock_traits

Definition at line 344 of file thread_safe_adaptors.hpp.

◆ read_lock_type

template<typename QT , typename M , typename WL = typename M::write_lock_type, class Sig = no_signalling<M>, class ValRet = typename QT::value_type, class MLk = typename lock::any_order::all<M::lock_traits::api_type, typename M::lock_traits::model_type, M, M>>
typedef atomic_t::read_lock_type jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::queue< QT, M, WL, Sig, ValRet, MLk >::read_lock_type

The type of read lock to use, by default the write lock. This allows the possibility of using a read-write lock.

Definition at line 342 of file thread_safe_adaptors.hpp.

◆ reference

template<typename QT , typename M , typename WL = typename M::write_lock_type, class Sig = no_signalling<M>, class ValRet = typename QT::value_type, class MLk = typename lock::any_order::all<M::lock_traits::api_type, typename M::lock_traits::model_type, M, M>>
typedef container_type::reference jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::queue< QT, M, WL, Sig, ValRet, MLk >::reference

Definition at line 346 of file thread_safe_adaptors.hpp.

◆ size_type

template<typename QT , typename M , typename WL = typename M::write_lock_type, class Sig = no_signalling<M>, class ValRet = typename QT::value_type, class MLk = typename lock::any_order::all<M::lock_traits::api_type, typename M::lock_traits::model_type, M, M>>
typedef container_type::size_type jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::queue< QT, M, WL, Sig, ValRet, MLk >::size_type

Definition at line 348 of file thread_safe_adaptors.hpp.

◆ thread_traits

template<typename QT , typename M , typename WL = typename M::write_lock_type, class Sig = no_signalling<M>, class ValRet = typename QT::value_type, class MLk = typename lock::any_order::all<M::lock_traits::api_type, typename M::lock_traits::model_type, M, M>>
typedef api_threading_traits<lock_traits::api_type, typename lock_traits::model_type> jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::queue< QT, M, WL, Sig, ValRet, MLk >::thread_traits

Definition at line 345 of file thread_safe_adaptors.hpp.

◆ value_ret_type

template<typename QT , typename M , typename WL = typename M::write_lock_type, class Sig = no_signalling<M>, class ValRet = typename QT::value_type, class MLk = typename lock::any_order::all<M::lock_traits::api_type, typename M::lock_traits::model_type, M, M>>
typedef ValRet jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::queue< QT, M, WL, Sig, ValRet, MLk >::value_ret_type

The type to return when removing items from the queue.

Definition at line 350 of file thread_safe_adaptors.hpp.

◆ value_type

template<typename QT , typename M , typename WL = typename M::write_lock_type, class Sig = no_signalling<M>, class ValRet = typename QT::value_type, class MLk = typename lock::any_order::all<M::lock_traits::api_type, typename M::lock_traits::model_type, M, M>>
typedef container_type::value_type jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::queue< QT, M, WL, Sig, ValRet, MLk >::value_type

Definition at line 349 of file thread_safe_adaptors.hpp.

◆ write_lock_type

template<typename QT , typename M , typename WL = typename M::write_lock_type, class Sig = no_signalling<M>, class ValRet = typename QT::value_type, class MLk = typename lock::any_order::all<M::lock_traits::api_type, typename M::lock_traits::model_type, M, M>>
typedef WL jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::queue< QT, M, WL, Sig, ValRet, MLk >::write_lock_type

The type of write-lock to use. This allows the possibility of using a read-write lock.

Definition at line 341 of file thread_safe_adaptors.hpp.

Constructor & Destructor Documentation

◆ queue() [1/3]

template<typename QT , typename M , typename WL , class Sig , class ValRet , class MLk >
jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::queue< QT, M, WL, Sig, ValRet, MLk >::queue
inlinenoexcept

◆ queue() [2/3]

template<typename QT , typename M , typename WL , class Sig , class ValRet , class MLk >
jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::queue< QT, M, WL, Sig, ValRet, MLk >::queue ( typename have_work_type::atomic_t &  ev)
inlineexplicit

Definition at line 277 of file thread_safe_adaptors_impl.hpp.

◆ queue() [3/3]

template<typename QT , typename M , typename WL , class Sig , class ValRet , class MLk >
jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::queue< QT, M, WL, Sig, ValRet, MLk >::queue ( queue< QT, M, WL, Sig, ValRet, MLk > const &  t)
inlinenoexcept

Definition at line 281 of file thread_safe_adaptors_impl.hpp.

◆ ~queue()

template<typename QT , typename M , typename WL , class Sig , class ValRet , class MLk >
jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::queue< QT, M, WL, Sig, ValRet, MLk >::~queue
inlinenoexcept

Definition at line 290 of file thread_safe_adaptors_impl.hpp.

Member Function Documentation

◆ BOOST_MPL_ASSERT()

template<typename QT , typename M , typename WL = typename M::write_lock_type, class Sig = no_signalling<M>, class ValRet = typename QT::value_type, class MLk = typename lock::any_order::all<M::lock_traits::api_type, typename M::lock_traits::model_type, M, M>>
jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::queue< QT, M, WL, Sig, ValRet, MLk >::BOOST_MPL_ASSERT ( (std::is_same< typename write_lock_type::atomic_t, atomic_t >)  )

◆ clear()

template<typename QT , typename M , typename WL , class Sig , class ValRet , class MLk >
void jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::queue< QT, M, WL, Sig, ValRet, MLk >::clear
inlinenoexcept

◆ colln() [1/2]

template<typename QT , typename M , typename WL = typename M::write_lock_type, class Sig = no_signalling<M>, class ValRet = typename QT::value_type, class MLk = typename lock::any_order::all<M::lock_traits::api_type, typename M::lock_traits::model_type, M, M>>
container_type const& jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::queue< QT, M, WL, Sig, ValRet, MLk >::colln ( ) const
inlinenoexcept

Definition at line 411 of file thread_safe_adaptors.hpp.

◆ colln() [2/2]

template<typename QT , typename M , typename WL = typename M::write_lock_type, class Sig = no_signalling<M>, class ValRet = typename QT::value_type, class MLk = typename lock::any_order::all<M::lock_traits::api_type, typename M::lock_traits::model_type, M, M>>
container_type& jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::queue< QT, M, WL, Sig, ValRet, MLk >::colln ( )
inlinenoexcept

Definition at line 414 of file thread_safe_adaptors.hpp.

◆ empty()

template<typename QT , typename M , typename WL , class Sig , class ValRet , class MLk >
bool jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::queue< QT, M, WL, Sig, ValRet, MLk >::empty
inlinenoexcept

Definition at line 304 of file thread_safe_adaptors_impl.hpp.

◆ erase()

template<typename QT , typename M , typename WL , class Sig , class ValRet , class MLk >
ppd::queue< QT, M, WL, Sig, ValRet, MLk >::size_type jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::queue< QT, M, WL, Sig, ValRet, MLk >::erase ( const value_type v)
inlinenoexcept

◆ front()

template<typename QT , typename M , typename WL , class Sig , class ValRet , class MLk >
ppd::queue< QT, M, WL, Sig, ValRet, MLk >::value_type jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::queue< QT, M, WL, Sig, ValRet, MLk >::front
inlinenoexcept

Definition at line 325 of file thread_safe_adaptors_impl.hpp.

◆ operator=()

template<typename QT , typename M , typename WL , class Sig , class ValRet , class MLk >
ppd::queue< QT, M, WL, Sig, ValRet, MLk > & jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::queue< QT, M, WL, Sig, ValRet, MLk >::operator= ( queue< QT, M, WL, Sig, ValRet, MLk > const &  t)
inlinenoexcept

Definition at line 294 of file thread_safe_adaptors_impl.hpp.

◆ pop_front()

template<typename QT , typename M , typename WL , class Sig , class ValRet , class MLk >
ppd::queue< QT, M, WL, Sig, ValRet, MLk >::value_ret_type jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::queue< QT, M, WL, Sig, ValRet, MLk >::pop_front
inlinenoexcept

◆ pop_front_1_nochk_nolk()

template<typename QT , typename M , typename WL , class Sig , class ValRet , class MLk >
ppd::queue< QT, M, WL, Sig, ValRet, MLk >::value_type jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::queue< QT, M, WL, Sig, ValRet, MLk >::pop_front_1_nochk_nolk
inlinenoexcept

◆ pop_front_1_nochk_nosig()

template<typename QT , typename M , typename WL , class Sig , class ValRet , class MLk >
ppd::queue< QT, M, WL, Sig, ValRet, MLk >::value_type jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::queue< QT, M, WL, Sig, ValRet, MLk >::pop_front_1_nochk_nosig
inlinenoexcept

Definition at line 398 of file thread_safe_adaptors_impl.hpp.

◆ pop_front_nochk_nolk()

template<typename QT , typename M , typename WL , class Sig , class ValRet , class MLk >
ppd::queue< QT, M, WL, Sig, ValRet, MLk >::value_ret_type jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::queue< QT, M, WL, Sig, ValRet, MLk >::pop_front_nochk_nolk
inlineprotectedvirtualnoexcept

◆ pop_front_nolk()

template<typename QT , typename M , typename WL , class Sig , class ValRet , class MLk >
ppd::queue< QT, M, WL, Sig, ValRet, MLk >::value_ret_type jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::queue< QT, M, WL, Sig, ValRet, MLk >::pop_front_nolk
inlinenoexcept

◆ pop_lock() [1/2]

template<typename QT , typename M , typename WL = typename M::write_lock_type, class Sig = no_signalling<M>, class ValRet = typename QT::value_type, class MLk = typename lock::any_order::all<M::lock_traits::api_type, typename M::lock_traits::model_type, M, M>>
atomic_t& __fastcall jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::queue< QT, M, WL, Sig, ValRet, MLk >::pop_lock ( ) const
inlinenoexcept

A flag to atomically signal if the container contains work or not, and how much work and the underlying lock, to assist in writing thread-safe code.

Definition at line 376 of file thread_safe_adaptors.hpp.

References jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::queue< QT, M, WL, Sig, ValRet, MLk >::have_work.

◆ pop_lock() [2/2]

template<typename QT , typename M , typename WL = typename M::write_lock_type, class Sig = no_signalling<M>, class ValRet = typename QT::value_type, class MLk = typename lock::any_order::all<M::lock_traits::api_type, typename M::lock_traits::model_type, M, M>>
atomic_t& __fastcall jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::queue< QT, M, WL, Sig, ValRet, MLk >::pop_lock ( )
inlinenoexcept

A flag to atomically signal if the container contains work or not, and how much work and the underlying lock, to assist in writing thread-safe code.

Definition at line 372 of file thread_safe_adaptors.hpp.

References jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::queue< QT, M, WL, Sig, ValRet, MLk >::have_work.

◆ push_back() [1/2]

template<typename QT , typename M , typename WL , class Sig , class ValRet , class MLk >
void jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::queue< QT, M, WL, Sig, ValRet, MLk >::push_back ( value_type &&  v)
inlinenoexcept

◆ push_back() [2/2]

template<typename QT , typename M , typename WL , class Sig , class ValRet , class MLk >
void jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::queue< QT, M, WL, Sig, ValRet, MLk >::push_back ( value_type const &  v)
inlinenoexcept

◆ push_front() [1/2]

template<typename QT , typename M , typename WL , class Sig , class ValRet , class MLk >
void jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::queue< QT, M, WL, Sig, ValRet, MLk >::push_front ( const value_type v)
inlinenoexcept

◆ push_front() [2/2]

template<typename QT , typename M , typename WL , class Sig , class ValRet , class MLk >
void jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::queue< QT, M, WL, Sig, ValRet, MLk >::push_front ( value_type &&  v)
inlinenoexcept

◆ push_lock() [1/2]

template<typename QT , typename M , typename WL = typename M::write_lock_type, class Sig = no_signalling<M>, class ValRet = typename QT::value_type, class MLk = typename lock::any_order::all<M::lock_traits::api_type, typename M::lock_traits::model_type, M, M>>
atomic_t& __fastcall jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::queue< QT, M, WL, Sig, ValRet, MLk >::push_lock ( ) const
inlinenoexcept

A flag to atomically signal if the container contains work or not, and how much work and the underlying lock, to assist in writing thread-safe code.

Definition at line 384 of file thread_safe_adaptors.hpp.

References jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::queue< QT, M, WL, Sig, ValRet, MLk >::have_work.

◆ push_lock() [2/2]

template<typename QT , typename M , typename WL = typename M::write_lock_type, class Sig = no_signalling<M>, class ValRet = typename QT::value_type, class MLk = typename lock::any_order::all<M::lock_traits::api_type, typename M::lock_traits::model_type, M, M>>
atomic_t& __fastcall jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::queue< QT, M, WL, Sig, ValRet, MLk >::push_lock ( )
inlinenoexcept

A flag to atomically signal if the container contains work or not, and how much work and the underlying lock, to assist in writing thread-safe code.

Definition at line 380 of file thread_safe_adaptors.hpp.

References jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::queue< QT, M, WL, Sig, ValRet, MLk >::have_work.

◆ size()

template<typename QT , typename M , typename WL , class Sig , class ValRet , class MLk >
ppd::queue< QT, M, WL, Sig, ValRet, MLk >::size_type jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::queue< QT, M, WL, Sig, ValRet, MLk >::size ( void  ) const
inlinenoexcept

Definition at line 319 of file thread_safe_adaptors_impl.hpp.

◆ sync_size()

template<typename QT , typename M , typename WL , class Sig , class ValRet , class MLk >
ppd::queue< QT, M, WL, Sig, ValRet, MLk >::size_type jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::queue< QT, M, WL, Sig, ValRet, MLk >::sync_size
inlinenoexcept

Member Data Documentation

◆ have_work

template<typename QT , typename M , typename WL = typename M::write_lock_type, class Sig = no_signalling<M>, class ValRet = typename QT::value_type, class MLk = typename lock::any_order::all<M::lock_traits::api_type, typename M::lock_traits::model_type, M, M>>
have_work_type jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::queue< QT, M, WL, Sig, ValRet, MLk >::have_work
mutable

◆ memory_access_mode

template<typename QT , typename M , typename WL = typename M::write_lock_type, class Sig = no_signalling<M>, class ValRet = typename QT::value_type, class MLk = typename lock::any_order::all<M::lock_traits::api_type, typename M::lock_traits::model_type, M, M>>
constexpr generic_traits::memory_access_modes jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::queue< QT, M, WL, Sig, ValRet, MLk >::memory_access_mode
staticconstexpr
Initial value:

To assist in allowing compile-time computation of the algorithmic order of the threading model.

Definition at line 356 of file thread_safe_adaptors.hpp.


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