libjmmcg  build_2783
A C++ library containing an eclectic mix of useful, advanced components.
jmmcg::ppd::private_::execution_context_algo_stack_type< pool_traits::work_distribution_mode_t::worker_threads_get_work< typename TPB::work_distribution_mode::queue_model >, generic_traits::return_data::joinable, TPB, CoreWk, AlgoWrapT, Wk > Class Template Referencefinal

Enforce a sequential-consistency memory-model on the result data that this object manages, via the accessors to the result data, but also allow horizontal threading: if the object being managed has not yet had its result computed, and the queue in the thread_pool is not empty, process an item from that queue in the mean-time. More...

#include <thread_client_context.hpp>

Inheritance diagram for jmmcg::ppd::private_::execution_context_algo_stack_type< pool_traits::work_distribution_mode_t::worker_threads_get_work< typename TPB::work_distribution_mode::queue_model >, generic_traits::return_data::joinable, TPB, CoreWk, AlgoWrapT, Wk >:
[legend]
Collaboration diagram for jmmcg::ppd::private_::execution_context_algo_stack_type< pool_traits::work_distribution_mode_t::worker_threads_get_work< typename TPB::work_distribution_mode::queue_model >, generic_traits::return_data::joinable, TPB, CoreWk, AlgoWrapT, Wk >:
[legend]

Public Types

typedef execution_context_algo_stack_type< pool_traits::work_distribution_mode_t::one_thread_distributes<>, generic_traits::return_data::joinable, TPB, CoreWk, AlgoWrapT, Wk > base_t
 
typedef horizontal_execution< generic_traits::return_data::joinable, TPB, noop_dtor, TPB::os_traits::lock_traits::template noop_atomic_ctr > base2_t
 
typedef base_t::thread_pool_type thread_pool_type
 
typedef thread_pool_type::pool_traits_type pool_traits_type
 The pool traits. More...
 
typedef thread_pool_type::os_traits os_traits
 
typedef thread_pool_type::pool_type pool_type
 
typedef os_traits::lock_traits::anon_event_type atomic_t
 
typedef os_traits::exception_type exception_type
 
typedef base_t::thread_wk_t thread_wk_t
 
- Public Types inherited from jmmcg::ppd::private_::execution_context_algo_stack_type< pool_traits::work_distribution_mode_t::one_thread_distributes<>, generic_traits::return_data::joinable, TPB, CoreWk, AlgoWrapT, Wk >
typedef eraseable_execution_context_base< TPB, noop_dtor, TPB::os_traits::lock_traits::template noop_atomic_ctr > 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::pool_type pool_type
 
typedef base_t::atomic_t atomic_t
 
typedef base_t::exception_type exception_type
 
typedef thread_pool_type::template create_direct< Wk > creator_t
 
typedef creator_t::result_type result_type
 
typedef AlgoWrapT alg_wrap_t
 
typedef stack_exec_ctx_helper::thread_wk_t thread_wk_t
 
typedef thread_wk_t::work_complete_t work_complete_t
 
- Public Types inherited from jmmcg::ppd::private_::eraseable_execution_context_base< TPB, noop_dtor, TPB::os_traits::lock_traits::template noop_atomic_ctr >
typedef horizontal_execution_itf< generic_traits::return_data::joinable, TPB, noop_dtor, TPB::os_traits::lock_traits::template noop_atomic_ctr > base_t
 
typedef base_t::thread_pool_type thread_pool_type
 
typedef base_t::pool_traits_type pool_traits_type
 The pool traits. More...
 
typedef base_t::os_traits os_traits
 
typedef base_t::pool_type pool_type
 
typedef base_t::atomic_t atomic_t
 
typedef base_t::exception_type exception_type
 
typedef base_t::thread_wk_t thread_wk_t
 
using signalled_work_queue_type = typename pool_traits_type::template signalled_work_queue_type< typename thread_pool_type::work_distribution_mode::queue_model >
 
- Public Types inherited from jmmcg::ppd::private_::horizontal_execution_itf< generic_traits::return_data::joinable, TPB, noop_dtor, TPB::os_traits::lock_traits::template noop_atomic_ctr >
typedef TPB thread_pool_type
 
typedef thread_pool_type::pool_traits_type pool_traits_type
 The pool traits. More...
 
typedef thread_pool_type::os_traits os_traits
 
typedef thread_pool_type::pool_type pool_type
 
typedef os_traits::lock_traits::anon_event_type atomic_t
 
typedef os_traits::exception_type exception_type
 
typedef closure::thread_wk_async_t< RD, os_traits, noop_dtor, TPB::os_traits::lock_traits::template noop_atomic_ctr, typename pool_traits_type::cfg_type > thread_wk_t
 
typedef thread_wk_t::work_complete_t work_complete_t
 This atomic object is the object that is used to signal to a waiting future that the work has been completed. More...
 
- Public Types inherited from jmmcg::ppd::private_::horizontal_execution_itf< RD, TPB, noop_dtor, TPB::os_traits::lock_traits::template noop_atomic_ctr >
typedef TPB thread_pool_type
 
typedef thread_pool_type::pool_traits_type pool_traits_type
 The pool traits. More...
 
typedef thread_pool_type::os_traits os_traits
 
typedef thread_pool_type::pool_type pool_type
 
typedef os_traits::lock_traits::anon_event_type atomic_t
 
typedef os_traits::exception_type exception_type
 
typedef closure::thread_wk_async_t< RD, os_traits, noop_dtor, TPB::os_traits::lock_traits::template noop_atomic_ctr, typename pool_traits_type::cfg_type > thread_wk_t
 
typedef thread_wk_t::work_complete_t work_complete_t
 This atomic object is the object that is used to signal to a waiting future that the work has been completed. More...
 

Public Member Functions

 execution_context_algo_stack_type (thread_pool_type &pool, typename thread_wk_t::cfg_details_type::params const &p, typename thread_wk_t::closure_t::argument_type &&tw, typename thread_wk_t::work_complete_t::num_tasks_spawned_t::value_type const i, typename thread_wk_t::work_complete_t::containers_type const &c, const typename thread_pool_type::pool_type::size_type clique) noexcept(false) FORCE_INLINE
 
 execution_context_algo_stack_type (thread_pool_type &pool, typename thread_wk_t::cfg_details_type::params const &p, typename thread_wk_t::closure_t::argument_type &&tw, typename thread_wk_t::work_complete_t::num_tasks_spawned_t::value_type const i, typename thread_wk_t::work_complete_t::containers_type const &c, const typename thread_pool_type::pool_type::size_type clique, typename thread_wk_t::work_complete_t::containers_type::size_type const out_colln_size) noexcept(false) FORCE_INLINE
 
 execution_context_algo_stack_type (execution_context_algo_stack_type const &)
 
 execution_context_algo_stack_type (execution_context_algo_stack_type &&)
 
 ~execution_context_algo_stack_type () FORCE_INLINE
 
void operator= (execution_context_algo_stack_type const &)=delete
 
void operator= (execution_context_algo_stack_type &&)=delete
 
- Public Member Functions inherited from jmmcg::ppd::private_::execution_context_algo_stack_type< pool_traits::work_distribution_mode_t::one_thread_distributes<>, generic_traits::return_data::joinable, TPB, CoreWk, AlgoWrapT, Wk >
 execution_context_algo_stack_type (thread_pool_type &, typename thread_wk_t::cfg_details_type::params const &p, typename thread_wk_t::closure_t::argument_type &&tw, typename work_complete_t::num_tasks_spawned_t::value_type const i, typename work_complete_t::containers_type const &c, const typename thread_pool_type::pool_type::size_type clique) noexcept(false) FORCE_INLINE
 
 execution_context_algo_stack_type (thread_pool_type &, typename thread_wk_t::cfg_details_type::params const &p, typename thread_wk_t::closure_t::argument_type &&tw, typename work_complete_t::num_tasks_spawned_t::value_type const i, typename work_complete_t::containers_type const &c, const typename thread_pool_type::pool_type::size_type clique, typename work_complete_t::containers_type::size_type const out_colln_size) noexcept(false) FORCE_INLINE
 
 execution_context_algo_stack_type (execution_context_algo_stack_type const &)
 
 execution_context_algo_stack_type (execution_context_algo_stack_type &&)
 
 ~execution_context_algo_stack_type () noexcept(false) FORCE_INLINE
 
void operator& ()=delete
 Can't automatically convert to a base-class address automatically - to maintain the concept that this is a stack allocated object. More...
 
template<class T >
 operator T () const =delete
 Attempt to remove the ability to subvert the safety by incorrectly casting the execution_context. More...
 
template<class T >
 operator T ()=delete
 Attempt to remove the ability to subvert the safety by incorrectly casting the execution_context. More...
 
void operator= (execution_context_algo_stack_type const &)=delete
 
void operator= (execution_context_algo_stack_type &&)=delete
 
add_ref_if_not_void< result_type const >::type __fastcall operator* () const noexcept(false) FORCE_INLINE
 A (potentially blocking) access to the results, but only after they are written. More...
 
add_ref_if_not_void< result_type >::type __fastcall operator* () noexcept(false) FORCE_INLINE
 A (potentially blocking) access to the results, but only after they are written. More...
 
const result_type *__fastcall operator-> () const noexcept(false) FORCE_INLINE
 A (potentially blocking) access to the results, but only after they are written, or process other work from the signalled_work_queue or batch whilst wait for the core_work to be processed. More...
 
result_type *__fastcall operator-> () noexcept(false) FORCE_INLINE
 A (potentially blocking) access to the results, but only after they are written, or process other work from the signalled_work_queue or batch whilst wait for the core_work to be processed. More...
 
const execution_context_algo_stack_type *__fastcall operator& () const noexcept(true) override FORCE_INLINE
 Ensure that if an execution context is passed to another function, only a constant version may be passed. More...
 
- Public Member Functions inherited from jmmcg::ppd::private_::eraseable_execution_context_base< TPB, noop_dtor, TPB::os_traits::lock_traits::template noop_atomic_ctr >
bool __fastcall erase () noexcept(false) FORCE_INLINE
 Erase the thread_wk_t item from the queue in the thread_pool, if it is still in there. More...
 
- Public Member Functions inherited from jmmcg::ppd::private_::horizontal_execution_itf< generic_traits::return_data::joinable, TPB, noop_dtor, TPB::os_traits::lock_traits::template noop_atomic_ctr >
 horizontal_execution_itf (horizontal_execution_itf const &)=delete
 
- Public Member Functions inherited from jmmcg::ppd::private_::horizontal_execution_itf< RD, TPB, noop_dtor, TPB::os_traits::lock_traits::template noop_atomic_ctr >
 horizontal_execution_itf (horizontal_execution_itf const &)=delete
 

Static Public Attributes

static constexpr generic_traits::return_data result_traits_ =generic_traits::return_data::joinable
 
static constexpr ppd::generic_traits::memory_access_modes memory_access_mode
 
- Static Public Attributes inherited from jmmcg::ppd::private_::execution_context_algo_stack_type< pool_traits::work_distribution_mode_t::one_thread_distributes<>, generic_traits::return_data::joinable, TPB, CoreWk, AlgoWrapT, Wk >
static constexpr generic_traits::return_data result_traits_ =generic_traits::return_data::joinable
 
static constexpr ppd::generic_traits::memory_access_modes memory_access_mode
 
- Static Public Attributes inherited from jmmcg::ppd::private_::eraseable_execution_context_base< TPB, noop_dtor, TPB::os_traits::lock_traits::template noop_atomic_ctr >
static constexpr ppd::generic_traits::memory_access_modes memory_access_mode
 
- Static Public Attributes inherited from jmmcg::ppd::private_::horizontal_execution_itf< generic_traits::return_data::joinable, TPB, noop_dtor, TPB::os_traits::lock_traits::template noop_atomic_ctr >
static constexpr generic_traits::return_data result_traits_
 
static constexpr ppd::generic_traits::memory_access_modes memory_access_mode
 
- Static Public Attributes inherited from jmmcg::ppd::private_::horizontal_execution< generic_traits::return_data::joinable, TPB, noop_dtor, TPB::os_traits::lock_traits::template noop_atomic_ctr >
static constexpr ppd::generic_traits::memory_access_modes memory_access_mode
 
- Static Public Attributes inherited from jmmcg::ppd::private_::horizontal_execution_itf< RD, TPB, noop_dtor, TPB::os_traits::lock_traits::template noop_atomic_ctr >
static constexpr generic_traits::return_data result_traits_
 
static constexpr ppd::generic_traits::memory_access_modes memory_access_mode
 

Friends

template<class ExCxt >
class call_push_back
 

Additional Inherited Members

- Protected Types inherited from jmmcg::ppd::private_::horizontal_execution< generic_traits::return_data::joinable, TPB, noop_dtor, TPB::os_traits::lock_traits::template noop_atomic_ctr >
typedef horizontal_execution_itf< RD, TPB, noop_dtor, TPB::os_traits::lock_traits::template noop_atomic_ctr > base_t
 
typedef base_t::thread_pool_type thread_pool_type
 
typedef base_t::pool_traits_type pool_traits_type
 
typedef base_t::pool_type pool_type
 
typedef base_t::os_traits os_traits
 
typedef base_t::thread_wk_t thread_wk_t
 
- Protected Member Functions inherited from jmmcg::ppd::private_::execution_context_algo_stack_type< pool_traits::work_distribution_mode_t::one_thread_distributes<>, generic_traits::return_data::joinable, TPB, CoreWk, AlgoWrapT, Wk >
const thread_wk_t &__fastcall core_work () const noexcept(true) final override FORCE_INLINE
 
work_complete_t &__fastcall work_complete () noexcept(true) final override FORCE_INLINE
 
work_complete_t &__fastcall work_complete () const noexcept(true) final override FORCE_INLINE
 
- Protected Member Functions inherited from jmmcg::ppd::private_::eraseable_execution_context_base< TPB, noop_dtor, TPB::os_traits::lock_traits::template noop_atomic_ctr >
 eraseable_execution_context_base () noexcept(false) FORCE_INLINE
 
 ~eraseable_execution_context_base () noexcept(false) FORCE_INLINE
 Can't be used polymorphically - to maintain the concept that this is a stack allocated object. More...
 
const signalled_work_queue_type::value_type &__fastcall wk_queue_item () const noexcept(true)=delete
 A counted reference to the item of work that has been transferred to the pool for execution. More...
 
signalled_work_queue_type::value_type &__fastcall wk_queue_item () noexcept(true)=delete
 A counted reference to the item of work that has been transferred to the pool for execution. More...
 
bool __fastcall has_work () const noexcept(true) FORCE_INLINE
 
- Protected Member Functions inherited from jmmcg::ppd::private_::horizontal_execution_itf< generic_traits::return_data::joinable, TPB, noop_dtor, TPB::os_traits::lock_traits::template noop_atomic_ctr >
constexpr horizontal_execution_itf () noexcept(true) FORCE_INLINE
 
 ~horizontal_execution_itf () noexcept(true) FORCE_INLINE
 Can't be used polymorphically - to maintain the concept that this is a stack allocated object. More...
 
bool __fastcall work_done () const noexcept(true) FORCE_INLINE
 Check to see if the work has been completed. More...
 
virtual void __fastcall wait_or_horizontal_thread () const noexcept(false) FORCE_INLINE
 
- Protected Member Functions inherited from jmmcg::ppd::private_::horizontal_execution< generic_traits::return_data::joinable, TPB, noop_dtor, TPB::os_traits::lock_traits::template noop_atomic_ctr >
 horizontal_execution (thread_pool_type &p, thread_wk_t &core_work) noexcept(true) FORCE_INLINE
 
 ~horizontal_execution () noexcept(false) FORCE_INLINE
 
void __fastcall wait_or_horizontal_thread () const noexcept(false) final override
 Wait upon the core_work to complete process(), or process() items from the pool::batch_details. More...
 
- Protected Member Functions inherited from jmmcg::ppd::private_::horizontal_execution_itf< RD, TPB, noop_dtor, TPB::os_traits::lock_traits::template noop_atomic_ctr >
constexpr horizontal_execution_itf () noexcept(true) FORCE_INLINE
 
 ~horizontal_execution_itf () noexcept(true) FORCE_INLINE
 Can't be used polymorphically - to maintain the concept that this is a stack allocated object. More...
 
virtual work_complete_t &__fastcall work_complete () noexcept(true)=0
 
virtual work_complete_t &__fastcall work_complete () const noexcept(true)=0
 
virtual const thread_wk_t &__fastcall core_work () const noexcept(true)=0
 
bool __fastcall work_done () const noexcept(true) FORCE_INLINE
 Check to see if the work has been completed. More...
 
- Protected Attributes inherited from jmmcg::ppd::private_::execution_context_algo_stack_type< pool_traits::work_distribution_mode_t::one_thread_distributes<>, generic_traits::return_data::joinable, TPB, CoreWk, AlgoWrapT, Wk >
work_complete_t work_complete_
 
thread_wk_t core_work_
 
- Protected Attributes inherited from jmmcg::ppd::private_::horizontal_execution< generic_traits::return_data::joinable, TPB, noop_dtor, TPB::os_traits::lock_traits::template noop_atomic_ctr >
thread_pool_typepool
 

Detailed Description

template<class TPB, template< class, class, template< class > class, template< class > class > class CoreWk, class AlgoWrapT, class Wk>
class jmmcg::ppd::private_::execution_context_algo_stack_type< pool_traits::work_distribution_mode_t::worker_threads_get_work< typename TPB::work_distribution_mode::queue_model >, generic_traits::return_data::joinable, TPB, CoreWk, AlgoWrapT, Wk >

Enforce a sequential-consistency memory-model on the result data that this object manages, via the accessors to the result data, but also allow horizontal threading: if the object being managed has not yet had its result computed, and the queue in the thread_pool is not empty, process an item from that queue in the mean-time.

This ensures that resource starvation (of threads) cannot occur, as no longer does waiting upon a dereference of an execution context block that thread, as that thread can process other work in the mean-time, which is important for finite-sized thread_pools. This specialisation performs horizontal threading, and the horizontal thread is also created on the stack, so with cache locality and all, quite good at stealing work. The execution_context stores the algo_thread_wk inside it, so it is allocated on the stack, not on the heap, which is only useful for classic, joinable, data-flow operations. This optimisation saves allocating the algo_thread_wk on the heap, and also the shared_ptr in it can have a dummy sp_counter_type, because the counter doesn't do anything, for a greater saving on atomic operations.

See also
horizontal_execution

Definition at line 1319 of file thread_client_context.hpp.

Member Typedef Documentation

◆ atomic_t

template<class TPB , template< class, class, template< class > class, template< class > class > class CoreWk, class AlgoWrapT , class Wk >
typedef os_traits::lock_traits::anon_event_type jmmcg::ppd::private_::execution_context_algo_stack_type< pool_traits::work_distribution_mode_t::worker_threads_get_work< typename TPB::work_distribution_mode::queue_model >, generic_traits::return_data::joinable, TPB, CoreWk, AlgoWrapT, Wk >::atomic_t

Definition at line 1327 of file thread_client_context.hpp.

◆ base2_t

template<class TPB , template< class, class, template< class > class, template< class > class > class CoreWk, class AlgoWrapT , class Wk >
typedef horizontal_execution<generic_traits::return_data::joinable, TPB, noop_dtor, TPB::os_traits::lock_traits::template noop_atomic_ctr> jmmcg::ppd::private_::execution_context_algo_stack_type< pool_traits::work_distribution_mode_t::worker_threads_get_work< typename TPB::work_distribution_mode::queue_model >, generic_traits::return_data::joinable, TPB, CoreWk, AlgoWrapT, Wk >::base2_t

Definition at line 1322 of file thread_client_context.hpp.

◆ base_t

template<class TPB , template< class, class, template< class > class, template< class > class > class CoreWk, class AlgoWrapT , class Wk >
typedef execution_context_algo_stack_type<pool_traits::work_distribution_mode_t::one_thread_distributes<>, generic_traits::return_data::joinable, TPB, CoreWk, AlgoWrapT, Wk> jmmcg::ppd::private_::execution_context_algo_stack_type< pool_traits::work_distribution_mode_t::worker_threads_get_work< typename TPB::work_distribution_mode::queue_model >, generic_traits::return_data::joinable, TPB, CoreWk, AlgoWrapT, Wk >::base_t

Definition at line 1321 of file thread_client_context.hpp.

◆ exception_type

template<class TPB , template< class, class, template< class > class, template< class > class > class CoreWk, class AlgoWrapT , class Wk >
typedef os_traits::exception_type jmmcg::ppd::private_::execution_context_algo_stack_type< pool_traits::work_distribution_mode_t::worker_threads_get_work< typename TPB::work_distribution_mode::queue_model >, generic_traits::return_data::joinable, TPB, CoreWk, AlgoWrapT, Wk >::exception_type

Definition at line 1328 of file thread_client_context.hpp.

◆ os_traits

template<class TPB , template< class, class, template< class > class, template< class > class > class CoreWk, class AlgoWrapT , class Wk >
typedef thread_pool_type::os_traits jmmcg::ppd::private_::execution_context_algo_stack_type< pool_traits::work_distribution_mode_t::worker_threads_get_work< typename TPB::work_distribution_mode::queue_model >, generic_traits::return_data::joinable, TPB, CoreWk, AlgoWrapT, Wk >::os_traits

Definition at line 1325 of file thread_client_context.hpp.

◆ pool_traits_type

template<class TPB , template< class, class, template< class > class, template< class > class > class CoreWk, class AlgoWrapT , class Wk >
typedef thread_pool_type::pool_traits_type jmmcg::ppd::private_::execution_context_algo_stack_type< pool_traits::work_distribution_mode_t::worker_threads_get_work< typename TPB::work_distribution_mode::queue_model >, generic_traits::return_data::joinable, TPB, CoreWk, AlgoWrapT, Wk >::pool_traits_type

The pool traits.

Definition at line 1324 of file thread_client_context.hpp.

◆ pool_type

template<class TPB , template< class, class, template< class > class, template< class > class > class CoreWk, class AlgoWrapT , class Wk >
typedef thread_pool_type::pool_type jmmcg::ppd::private_::execution_context_algo_stack_type< pool_traits::work_distribution_mode_t::worker_threads_get_work< typename TPB::work_distribution_mode::queue_model >, generic_traits::return_data::joinable, TPB, CoreWk, AlgoWrapT, Wk >::pool_type

Definition at line 1326 of file thread_client_context.hpp.

◆ thread_pool_type

template<class TPB , template< class, class, template< class > class, template< class > class > class CoreWk, class AlgoWrapT , class Wk >
typedef base_t::thread_pool_type jmmcg::ppd::private_::execution_context_algo_stack_type< pool_traits::work_distribution_mode_t::worker_threads_get_work< typename TPB::work_distribution_mode::queue_model >, generic_traits::return_data::joinable, TPB, CoreWk, AlgoWrapT, Wk >::thread_pool_type

Definition at line 1323 of file thread_client_context.hpp.

◆ thread_wk_t

template<class TPB , template< class, class, template< class > class, template< class > class > class CoreWk, class AlgoWrapT , class Wk >
typedef base_t::thread_wk_t jmmcg::ppd::private_::execution_context_algo_stack_type< pool_traits::work_distribution_mode_t::worker_threads_get_work< typename TPB::work_distribution_mode::queue_model >, generic_traits::return_data::joinable, TPB, CoreWk, AlgoWrapT, Wk >::thread_wk_t

Definition at line 1329 of file thread_client_context.hpp.

Constructor & Destructor Documentation

◆ execution_context_algo_stack_type() [1/4]

template<class TPB , template< class, class, template< class > class, template< class > class > class CoreWk, class AlgoWrapT , class Wk >
jmmcg::ppd::private_::execution_context_algo_stack_type< pool_traits::work_distribution_mode_t::worker_threads_get_work< typename TPB::work_distribution_mode::queue_model >, generic_traits::return_data::joinable, TPB, CoreWk, AlgoWrapT, Wk >::execution_context_algo_stack_type ( thread_pool_type pool,
typename thread_wk_t::cfg_details_type::params const &  p,
typename thread_wk_t::closure_t::argument_type &&  tw,
typename thread_wk_t::work_complete_t::num_tasks_spawned_t::value_type const  i,
typename thread_wk_t::work_complete_t::containers_type const &  c,
const typename thread_pool_type::pool_type::size_type  clique 
)
inlinenoexcept

Definition at line 1342 of file thread_client_context.hpp.

◆ execution_context_algo_stack_type() [2/4]

template<class TPB , template< class, class, template< class > class, template< class > class > class CoreWk, class AlgoWrapT , class Wk >
jmmcg::ppd::private_::execution_context_algo_stack_type< pool_traits::work_distribution_mode_t::worker_threads_get_work< typename TPB::work_distribution_mode::queue_model >, generic_traits::return_data::joinable, TPB, CoreWk, AlgoWrapT, Wk >::execution_context_algo_stack_type ( thread_pool_type pool,
typename thread_wk_t::cfg_details_type::params const &  p,
typename thread_wk_t::closure_t::argument_type &&  tw,
typename thread_wk_t::work_complete_t::num_tasks_spawned_t::value_type const  i,
typename thread_wk_t::work_complete_t::containers_type const &  c,
const typename thread_pool_type::pool_type::size_type  clique,
typename thread_wk_t::work_complete_t::containers_type::size_type const  out_colln_size 
)
inlinenoexcept

◆ execution_context_algo_stack_type() [3/4]

template<class TPB , template< class, class, template< class > class, template< class > class > class CoreWk, class AlgoWrapT , class Wk >
jmmcg::ppd::private_::execution_context_algo_stack_type< pool_traits::work_distribution_mode_t::worker_threads_get_work< typename TPB::work_distribution_mode::queue_model >, generic_traits::return_data::joinable, TPB, CoreWk, AlgoWrapT, Wk >::execution_context_algo_stack_type ( execution_context_algo_stack_type< pool_traits::work_distribution_mode_t::worker_threads_get_work< typename TPB::work_distribution_mode::queue_model >, generic_traits::return_data::joinable, TPB, CoreWk, AlgoWrapT, Wk > const &  )

This needs to be declared, to be standards compliant, but needn't be defined, as cctor elision doesn't require the definition.

◆ execution_context_algo_stack_type() [4/4]

template<class TPB , template< class, class, template< class > class, template< class > class > class CoreWk, class AlgoWrapT , class Wk >
jmmcg::ppd::private_::execution_context_algo_stack_type< pool_traits::work_distribution_mode_t::worker_threads_get_work< typename TPB::work_distribution_mode::queue_model >, generic_traits::return_data::joinable, TPB, CoreWk, AlgoWrapT, Wk >::execution_context_algo_stack_type ( execution_context_algo_stack_type< pool_traits::work_distribution_mode_t::worker_threads_get_work< typename TPB::work_distribution_mode::queue_model >, generic_traits::return_data::joinable, TPB, CoreWk, AlgoWrapT, Wk > &&  )

◆ ~execution_context_algo_stack_type()

template<class TPB , template< class, class, template< class > class, template< class > class > class CoreWk, class AlgoWrapT , class Wk >
jmmcg::ppd::private_::execution_context_algo_stack_type< pool_traits::work_distribution_mode_t::worker_threads_get_work< typename TPB::work_distribution_mode::queue_model >, generic_traits::return_data::joinable, TPB, CoreWk, AlgoWrapT, Wk >::~execution_context_algo_stack_type ( )
inline

Definition at line 1356 of file thread_client_context.hpp.

Member Function Documentation

◆ operator=() [1/2]

template<class TPB , template< class, class, template< class > class, template< class > class > class CoreWk, class AlgoWrapT , class Wk >
void jmmcg::ppd::private_::execution_context_algo_stack_type< pool_traits::work_distribution_mode_t::worker_threads_get_work< typename TPB::work_distribution_mode::queue_model >, generic_traits::return_data::joinable, TPB, CoreWk, AlgoWrapT, Wk >::operator= ( execution_context_algo_stack_type< pool_traits::work_distribution_mode_t::worker_threads_get_work< typename TPB::work_distribution_mode::queue_model >, generic_traits::return_data::joinable, TPB, CoreWk, AlgoWrapT, Wk > &&  )
delete

◆ operator=() [2/2]

template<class TPB , template< class, class, template< class > class, template< class > class > class CoreWk, class AlgoWrapT , class Wk >
void jmmcg::ppd::private_::execution_context_algo_stack_type< pool_traits::work_distribution_mode_t::worker_threads_get_work< typename TPB::work_distribution_mode::queue_model >, generic_traits::return_data::joinable, TPB, CoreWk, AlgoWrapT, Wk >::operator= ( execution_context_algo_stack_type< pool_traits::work_distribution_mode_t::worker_threads_get_work< typename TPB::work_distribution_mode::queue_model >, generic_traits::return_data::joinable, TPB, CoreWk, AlgoWrapT, Wk > const &  )
delete

Friends And Related Function Documentation

◆ call_push_back

template<class TPB , template< class, class, template< class > class, template< class > class > class CoreWk, class AlgoWrapT , class Wk >
template<class ExCxt >
friend class call_push_back
friend

Definition at line 1363 of file thread_client_context.hpp.

Member Data Documentation

◆ memory_access_mode

template<class TPB , template< class, class, template< class > class, template< class > class > class CoreWk, class AlgoWrapT , class Wk >
constexpr ppd::generic_traits::memory_access_modes jmmcg::ppd::private_::execution_context_algo_stack_type< pool_traits::work_distribution_mode_t::worker_threads_get_work< typename TPB::work_distribution_mode::queue_model >, generic_traits::return_data::joinable, TPB, CoreWk, AlgoWrapT, Wk >::memory_access_mode
staticconstexpr
Initial value:

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

Definition at line 1335 of file thread_client_context.hpp.

◆ result_traits_

template<class TPB , template< class, class, template< class > class, template< class > class > class CoreWk, class AlgoWrapT , class Wk >
constexpr generic_traits::return_data jmmcg::ppd::private_::execution_context_algo_stack_type< pool_traits::work_distribution_mode_t::worker_threads_get_work< typename TPB::work_distribution_mode::queue_model >, generic_traits::return_data::joinable, TPB, CoreWk, AlgoWrapT, Wk >::result_traits_ =generic_traits::return_data::joinable
staticconstexpr

Definition at line 1330 of file thread_client_context.hpp.


The documentation for this class was generated from the following file:
jmmcg::ppd::generic_traits::memory_access_modes::erew_memory_access
Exclusive-Read, Exclusive-Write memory access.
jmmcg::ppd::generic_traits::memory_access_modes::crew_memory_access
Concurrent-Read, Exclusive-Write memory access.