libjmmcg  build_2051
A C++ library containing an eclectic mix of useful, advanced components.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
jmmcg::ppd::private_::priority_t< nonjoinable_t< TPB >, Pri > Class Template Reference

#include <thread_dsel_types.hpp>

Inheritance diagram for jmmcg::ppd::private_::priority_t< nonjoinable_t< TPB >, Pri >:
[legend]
Collaboration diagram for jmmcg::ppd::private_::priority_t< nonjoinable_t< TPB >, Pri >:
[legend]

Public Types

typedef nonjoinable_t< TPB > base_t
 
typedef base_t::thread_pool_type thread_pool_type
 
typedef base_t::pool_traits_type pool_traits_type
 
typedef base_t::os_traits os_traits
 
typedef base_t::priority_type priority_type
 

Public Member Functions

constexpr priority_t (thread_pool_type &p, typename pool_traits_type::thread_wk_elem_type::cfg_details_type::params const &cfg_p) noexcept(true) FORCE_INLINE
 
constexpr priority_t (thread_pool_type &p, cliques::element_type const &c, typename pool_traits_type::thread_wk_elem_type::cfg_details_type::params const &cfg_p) noexcept(true) FORCE_INLINE
 
template<class InpWk >
thread_pool_type &__fastcall
FORCE_INLINE 
push_back (InpWk &&wk) noexcept(false)
 Transfer the closure_base-derived closure to be process()ed at the specified priority, specified by the template parameter. More...
 
template<class R , class F , class L >
thread_pool_type &__fastcall
FORCE_INLINE 
operator<< (boost::_bi::bind_t< R, F, L > &&wk) noexcept(false)
 
template<class InpWk >
thread_pool_type &__fastcall
FORCE_INLINE 
operator<< (InpWk &&wk) noexcept(false)
 
template<class Alg >
thread_pool_type &__fastcall push_back (parallel_algorithm< Alg > &&)=delete
 We don't support priorities on closure_base-derived closure that is a parallel_algorithm. More...
 
template<class Alg >
thread_pool_type &__fastcall operator<< (parallel_algorithm< Alg > &&)=delete
 We don't support priorities on closure_base-derived closure that is a parallel_algorithm. More...
 

Static Public Attributes

static constexpr priority_type priority =Pri
 

Detailed Description

template<class TPB, typename TPB::priority_type Pri>
class jmmcg::ppd::private_::priority_t< nonjoinable_t< TPB >, Pri >

Definition at line 443 of file thread_dsel_types.hpp.

Member Typedef Documentation

template<class TPB , typename TPB::priority_type Pri>
typedef nonjoinable_t<TPB> jmmcg::ppd::private_::priority_t< nonjoinable_t< TPB >, Pri >::base_t

Definition at line 445 of file thread_dsel_types.hpp.

template<class TPB , typename TPB::priority_type Pri>
typedef base_t::os_traits jmmcg::ppd::private_::priority_t< nonjoinable_t< TPB >, Pri >::os_traits

Definition at line 448 of file thread_dsel_types.hpp.

template<class TPB , typename TPB::priority_type Pri>
typedef base_t::pool_traits_type jmmcg::ppd::private_::priority_t< nonjoinable_t< TPB >, Pri >::pool_traits_type

Definition at line 447 of file thread_dsel_types.hpp.

template<class TPB , typename TPB::priority_type Pri>
typedef base_t::priority_type jmmcg::ppd::private_::priority_t< nonjoinable_t< TPB >, Pri >::priority_type

Definition at line 449 of file thread_dsel_types.hpp.

template<class TPB , typename TPB::priority_type Pri>
typedef base_t::thread_pool_type jmmcg::ppd::private_::priority_t< nonjoinable_t< TPB >, Pri >::thread_pool_type

Definition at line 446 of file thread_dsel_types.hpp.

Constructor & Destructor Documentation

template<class TPB , typename TPB::priority_type Pri>
constexpr jmmcg::ppd::private_::priority_t< nonjoinable_t< TPB >, Pri >::priority_t ( thread_pool_type p,
typename pool_traits_type::thread_wk_elem_type::cfg_details_type::params const &  cfg_p 
)
inlinenoexcept

Definition at line 453 of file thread_dsel_types.hpp.

template<class TPB , typename TPB::priority_type Pri>
constexpr jmmcg::ppd::private_::priority_t< nonjoinable_t< TPB >, Pri >::priority_t ( thread_pool_type p,
cliques::element_type const &  c,
typename pool_traits_type::thread_wk_elem_type::cfg_details_type::params const &  cfg_p 
)
inlinenoexcept

Definition at line 456 of file thread_dsel_types.hpp.

Member Function Documentation

template<class TPB , typename TPB::priority_type Pri>
template<class R , class F , class L >
thread_pool_type& __fastcall FORCE_INLINE jmmcg::ppd::private_::priority_t< nonjoinable_t< TPB >, Pri >::operator<< ( boost::_bi::bind_t< R, F, L > &&  wk)
inlinenoexcept

Definition at line 480 of file thread_dsel_types.hpp.

template<class TPB , typename TPB::priority_type Pri>
template<class InpWk >
thread_pool_type& __fastcall FORCE_INLINE jmmcg::ppd::private_::priority_t< nonjoinable_t< TPB >, Pri >::operator<< ( InpWk &&  wk)
inlinenoexcept

Definition at line 486 of file thread_dsel_types.hpp.

template<class TPB , typename TPB::priority_type Pri>
template<class Alg >
thread_pool_type& __fastcall jmmcg::ppd::private_::priority_t< nonjoinable_t< TPB >, Pri >::operator<< ( parallel_algorithm< Alg > &&  )
delete

We don't support priorities on closure_base-derived closure that is a parallel_algorithm.

template<class TPB , typename TPB::priority_type Pri>
template<class InpWk >
thread_pool_type& __fastcall FORCE_INLINE jmmcg::ppd::private_::priority_t< nonjoinable_t< TPB >, Pri >::push_back ( InpWk &&  wk)
inlinenoexcept

Transfer the closure_base-derived closure to be process()ed at the specified priority, specified by the template parameter.

Todo:
JMG: Hubert Matthews suggested that potentially expression templates could be used here to concatenate the thread_wk_t's that are transferred into the pool; also as an implementation of back_batching, i.e. GSS(k) scheduling.
Parameters
wkThe closure_base-derived closure to be asynchronously executed, that must be copy-constructible. The result_type is inferred from the process(result_type &) or process() member-functions declared in the Wk type. Note that the process() member-function must not be overloaded, or this will not work, also that it must use the __fastcall calling-convention on those platforms that support it. The default mutator function is called process(), but you could provide an alternative member-function name if desired, as long as the signature is correct via the declaration of create_direct.
Returns
A reference to the pool to allow chaining.
See Also
create_direct, thread_wk_t, kernel_priority::work

Definition at line 471 of file thread_dsel_types.hpp.

template<class TPB , typename TPB::priority_type Pri>
template<class Alg >
thread_pool_type& __fastcall jmmcg::ppd::private_::priority_t< nonjoinable_t< TPB >, Pri >::push_back ( parallel_algorithm< Alg > &&  )
delete

We don't support priorities on closure_base-derived closure that is a parallel_algorithm.

Member Data Documentation

template<class TPB , typename TPB::priority_type Pri>
constexpr priority_type jmmcg::ppd::private_::priority_t< nonjoinable_t< TPB >, Pri >::priority =Pri
static

Definition at line 451 of file thread_dsel_types.hpp.


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