libjmmcg  build_2783
A C++ library containing an eclectic mix of useful, advanced components.
jmmcg::ppd::private_::cliques_t< nonjoinable_t< TPB > > Class Template Referencefinal

#include <thread_dsel_types.hpp>

Inheritance diagram for jmmcg::ppd::private_::cliques_t< nonjoinable_t< TPB > >:
[legend]
Collaboration diagram for jmmcg::ppd::private_::cliques_t< nonjoinable_t< TPB > >:
[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 cliques::element_type element_type
 

Public Member Functions

constexpr cliques_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 push_back (InpWk &&)=delete
 We don't support cliques on closure_base-derived closure that is not a parallel_algorithm. More...
 
template<class Alg >
thread_pool_type &__fastcall FORCE_INLINE push_back (parallel_algorithm< Alg > &&wk) noexcept(false)
 Transfer the closure_base-derived closure with the appropriate priority, specified by the template parameter. More...
 
template<class InpWk >
thread_pool_type &__fastcall operator<< (InpWk &&)=delete
 We don't support cliques on closure_base-derived closure that is not a parallel_algorithm. More...
 
template<class Alg >
thread_pool_type &__fastcall FORCE_INLINE operator<< (parallel_algorithm< Alg > &&wk) noexcept(false)
 

Detailed Description

template<class TPB>
class jmmcg::ppd::private_::cliques_t< nonjoinable_t< TPB > >

Definition at line 644 of file thread_dsel_types.hpp.

Member Typedef Documentation

◆ base_t

template<class TPB >
typedef nonjoinable_t<TPB> jmmcg::ppd::private_::cliques_t< nonjoinable_t< TPB > >::base_t

Definition at line 646 of file thread_dsel_types.hpp.

◆ element_type

Definition at line 650 of file thread_dsel_types.hpp.

◆ os_traits

Definition at line 649 of file thread_dsel_types.hpp.

◆ pool_traits_type

Definition at line 648 of file thread_dsel_types.hpp.

◆ thread_pool_type

Definition at line 647 of file thread_dsel_types.hpp.

Constructor & Destructor Documentation

◆ cliques_t()

template<class TPB >
constexpr jmmcg::ppd::private_::cliques_t< nonjoinable_t< TPB > >::cliques_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 
)
inlineconstexprnoexcept

Definition at line 652 of file thread_dsel_types.hpp.

Member Function Documentation

◆ operator<<() [1/2]

template<class TPB >
template<class InpWk >
thread_pool_type& __fastcall jmmcg::ppd::private_::cliques_t< nonjoinable_t< TPB > >::operator<< ( InpWk &&  )
delete

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

◆ operator<<() [2/2]

template<class TPB >
template<class Alg >
thread_pool_type& __fastcall FORCE_INLINE jmmcg::ppd::private_::cliques_t< nonjoinable_t< TPB > >::operator<< ( parallel_algorithm< Alg > &&  wk)
inlinenoexcept

Definition at line 685 of file thread_dsel_types.hpp.

◆ push_back() [1/2]

template<class TPB >
template<class InpWk >
thread_pool_type& __fastcall jmmcg::ppd::private_::cliques_t< nonjoinable_t< TPB > >::push_back ( InpWk &&  )
delete

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

◆ push_back() [2/2]

template<class TPB >
template<class Alg >
thread_pool_type& __fastcall FORCE_INLINE jmmcg::ppd::private_::cliques_t< nonjoinable_t< TPB > >::push_back ( parallel_algorithm< Alg > &&  wk)
inlinenoexcept

Transfer the closure_base-derived closure with the appropriate priority, specified by the template parameter.

This operation requires 2 memory allocations, in addition to those required for the operation of the parallel algorithm.

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

Definition at line 674 of file thread_dsel_types.hpp.


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