libjmmcg  release_579_6_g8cffd
A C++ library containing an eclectic mix of useful, advanced components.
jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_ Namespace Reference

Namespaces

namespace  alg_wk_wrap
 
namespace  closure
 Classes related to implementing work within the thread_pool as a closure.
 
namespace  core_work_result
 
namespace  deref
 The execution_context may need extra dereferencing according to the result_type it contains.
 
namespace  kernel_priority
 
namespace  void_chooser
 Hacking to avoid using the full execution_context and create a cheaper, more simple type for sequential use.
 

Classes

struct  add_ref_if_not_void
 The execution_context may need to avoid dereferencing if the result_type it contains is void. More...
 
struct  add_ref_if_not_void< void >
 
struct  add_ref_if_not_void< void const >
 
class  alg_wrapper1
 Assist with implementing the parallel versions of the standard algorithms. More...
 
class  alg_wrapper1< P, Wk, generic_traits::return_data::nonjoinable >
 
class  alg_wrapper2
 Assist with implementing the parallel versions of the standard algorithms. More...
 
class  alg_wrapper2< P, Wk, generic_traits::return_data::nonjoinable >
 
class  alg_wrapper3
 Assist with implementing the parallel versions of the standard algorithms. More...
 
class  alg_wrapper3< P, Wk, generic_traits::return_data::nonjoinable >
 
class  batch_details
 A class to assist in processing the core_work in the GSS(k) batch, ensuring that items within a batch in a thread are fully processed before any wait in that thread is performed, because we could deadlock. More...
 
class  batch_details< 1UL, WQ, Stats >
 Optimisation for when GSS(k)=GSS(1), i.e. no batching. More...
 
class  binary_fun_work_type
 An adaptor to allow STL binary functions to be operated upon in the thread_pool. More...
 
struct  choose_process_fn
 
struct  choose_process_fn< std::false_type, PFP, Wk, CFG >
 
class  cliques_t
 
class  cliques_t< joinable_t< TPB > >
 
class  cliques_t< nonjoinable_t< TPB > >
 
class  counted_event
 
struct  crack_process_fn_traits
 
struct  crack_process_fn_traits< void(__fastcall Cls::*)() const noexcept(NoExcept), CFG >
 
struct  crack_process_fn_traits< void(__fastcall Cls::*)() noexcept(NoExcept), CFG >
 
struct  crack_process_fn_traits< void(__fastcall Cls::*)(ResT &) const noexcept(NoExcept), CFG >
 
struct  crack_process_fn_traits< void(__fastcall Cls::*)(ResT &) noexcept(NoExcept), CFG >
 
struct  crack_process_fn_traits< void(__fastcall Cls::*)(ResT &, A2 const &) const noexcept(NoExcept), CFG >
 
struct  crack_process_fn_traits< void(__fastcall Cls::*)(ResT &, A2 const &) noexcept(NoExcept), CFG >
 
struct  create_direct
 This library-internal class just creates a thread_wk_t for the user's closure_base-derived closure. More...
 
struct  def_key_compare
 
struct  def_key_compare< no_op, V >
 
class  ensure_wk_complete
 
class  eraseable_execution_context_base
 
class  eval_shared_deleter_t
 Ensure that the deleter is not called for work that is stack-allocated. More...
 
class  execution_context_algo_buff_stack_type
 
class  execution_context_algo_buff_stack_type< DM, generic_traits::return_data::nonjoinable, AlgCoreWk, GenWk, Wk, Deref, InitCoreWk >
 Ensure that the compiler emits an error if attempting to non-joinably create an execution context. More...
 
class  execution_context_algo_buff_stack_type< pool_traits::work_distribution_mode_t::one_thread_distributes<>, generic_traits::return_data::joinable, AlgCoreWk, GenWk, Wk, Deref, InitCoreWk >
 Enforce a sequential-consistency memory-model on the result data that this object manages, via the accessors to the result data. More...
 
class  execution_context_algo_buff_stack_type< pool_traits::work_distribution_mode_t::worker_threads_get_work< typename GenWk::thread_pool_type::work_distribution_mode::queue_model >, generic_traits::return_data::joinable, AlgCoreWk, GenWk, Wk, Deref, InitCoreWk >
 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...
 
class  execution_context_algo_stack_type
 
class  execution_context_algo_stack_type< DM, generic_traits::return_data::nonjoinable, TPB, CoreWk, AlgoWrapT, Wk >
 Ensure that the compiler emits an error if attempting to non-joinably create an execution context. More...
 
class  execution_context_algo_stack_type< pool_traits::work_distribution_mode_t::one_thread_distributes<>, 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. More...
 
class  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. More...
 
class  execution_context_stack_type
 
class  execution_context_stack_type< DM, generic_traits::return_data::nonjoinable, TPB, Wk >
 Ensure that the compiler emits an error if attempting to non-joinably create an execution context. More...
 
class  execution_context_stack_type< pool_traits::work_distribution_mode_t::one_thread_distributes<>, generic_traits::return_data::joinable, TPB, Wk >
 Enforce a sequential-consistency memory-model on the result data that this object manages, via the accessors to the result data. More...
 
class  execution_context_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, 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. More...
 
class  fixed_pool_of_threads
 This is a low-level collection of pool_thread objects, that is created by one other thread. More...
 
class  get_process_fn_traits
 
class  GSSk_batching
 This is the batch that the main thread will process. More...
 
class  horizontal_execution
 Class that implements the horizontal execution algorithm. More...
 
class  horizontal_execution_itf
 Interface for allowing an execution context to potentially execute work horizontally whilst the execution_context is held, so that we both ensure that we keep the cores busy, but also avoid deadlock due to resource starvation from a lack of available threads to process input_work (tasks) from the signalled_work_queue in the thread_pool_type. More...
 
struct  input_safe_colln
 
struct  input_safe_range
 
class  joinable_t
 A modifier to allow joinably transferring the work to the pool. More...
 
struct  largest_par_alg_obj
 
class  mstr_accumulate_across_threads
 
class  mstr_accumulate_across_threads< no_statistics< T > >
 
struct  no_op
 
class  nonjoinable_buff_t
 
class  nonjoinable_t
 A modifier to allow non-joinably transferring the work to the pool. More...
 
struct  noop
 
struct  one_container
 
struct  one_output_container_rw_lk
 
struct  one_output_container_simple_lk
 
class  output_safe_colln_rw_lk
 
struct  output_safe_colln_simple_lk
 
struct  output_safe_range
 
struct  parallel_algorithm
 The parallel algorithms inherits from this to assist with implementing the cliques_t language element in the DSEL. More...
 
struct  pop_front_t
 
struct  pop_t
 
class  priority_t
 A modifier to allow setting the kernel-level priority that will be used by the thread whilst processing the work. More...
 
class  priority_t< joinable_t, TPB, Pri >
 
class  priority_t< nonjoinable_t, TPB, Pri >
 
struct  remove_shared_ptr
 
struct  remove_shared_ptr< shared_ptr< V, LkT >, LkT >
 
class  sequential_pool
 A specialisation for sequential "threading", i.e. everything runs on the main thread. More...
 
class  setter
 The internal class that does the priority setting and restoration as RAII. More...
 
struct  stl_functor_result_type
 
class  subdivide_n_gen_wk
 Distribute the input range [begin, end) across the thread_pool_type recursively as a collection of tasks. More...
 
class  subdivide_n_gen_wk1
 
class  subdivide_n_gen_wk1< pool_traits::size_mode_t::infinite, TPB, Fn, Conts, Alg >
 
class  subdivide_n_gen_wk2
 
class  subdivide_n_gen_wk2< pool_traits::size_mode_t::infinite, TPB, UniOp, Conts, Alg >
 
class  subdivide_n_gen_wk3
 
class  subdivide_n_gen_wk3< pool_traits::size_mode_t::infinite, TPB, BinOp, Conts, Alg >
 
class  subdivide_n_gen_wk< pool_traits::size_mode_t::infinite, TPB, Alg >
 Distribute the input range [begin, end) across the thread_pool_type recursively as a collection of tasks. More...
 
class  thread_base
 This class is used to implement a raw class that wraps using a raw thread. More...
 
class  thread_pool_base
 Base class for all multi-threaded thread_pools. More...
 
class  thread_pool_queue_model
 Implements the specifics of how the queue(s) within the thread_pool or pool_threads are implemented. More...
 
class  thread_pool_queue_model< pool_traits::work_distribution_mode_t::worker_threads_get_work< pool_traits::work_distribution_mode_t::queue_model_t::thread_owns_queue< SM > >, Ps, PTT, Pt >
 Implements the case when there is a signalled_work_queue contained within each pool_thread, and an algorithm is used to steal work from the pool_thread by other pool_threads. More...
 
class  thread_pool_queue_model< QM< pool_traits::work_distribution_mode_t::queue_model_t::pool_owns_queue >, Ps, PTT, Pt >
 Implements the case when the signalled_work_queue is contained within the thread_pool & shared by the pool_threads. More...
 
struct  three_containers
 
struct  two_containers
 
struct  two_out_ranges
 
struct  two_ranges
 
class  unary_fun_work_type
 An adaptor to allow STL unary functions to be operated upon in the thread_pool. More...
 
class  unlock_collections
 
class  wrap_boost_bind_t
 A wrapper for converting a boost::bind() unspecified-object into an object suitable for transferring into a thread_pool. More...
 
class  wrap_std_bind_t
 A wrapper for converting a boost::bind() unspecified-object into an object suitable for transferring into a thread_pool. More...
 
class  wrkr_accumulate_across_threads
 
class  wrkr_accumulate_across_threads< no_statistics< T > >
 

Typedefs

typedef thread_base< generic_traits::api_type::posix_pthreads, sequential_modethread_t_s
 
typedef thread_base< generic_traits::api_type::posix_pthreads, heavyweight_threadingthread_t_m
 

Enumerations

enum  scheduler_policy : int { schedule_policy =0 }
 
enum  scheduler_min_max_priorities : int { scheduler_min_priority =0 , scheduler_max_priority =0 }
 

Functions

template<generic_traits::api_type API, typename Mdl >
tostream &__fastcall FORCE_INLINE operator<< (tostream &os, thread_base< API, Mdl > const &th)
 
template<class DM1 , pool_traits::size_mode_t Ps1, typename PTT1 , class Pt1 >
tostream &__fastcall operator<< (tostream &os, thread_pool_queue_model< DM1, Ps1, PTT1, Pt1 > const &t)
 
template<class DM1 , pool_traits::size_mode_t Ps1, typename PTT1 , class Pt1 >
tostream &__fastcall operator<< (tostream &os, thread_pool_base< DM1, Ps1, PTT1, Pt1 > const &t)
 

Variables

const char shuffle_str [] ="shuffle"
 
const char lhs_merge_str [] ="lhs_merge"
 
const char rhs_merge_str [] ="rhs_merge"
 
const char combine1_str [] ="combine1"
 
const char combine2_str [] ="combine2"
 
const char ascending_lhs_str [] ="ascending_lhs"
 
const char descending_rhs_str [] ="descending_rhs"
 
const char merge_str [] ="merge"
 
const char arg_str [] ="arg"
 
const char lhs_str [] ="lhs"
 
const char rhs_str [] ="rhs"
 
const char unary_fun_str [] ="unary_fun"
 
const char binary_fun_str [] ="binary_fun"
 
constexpr char gen_wk_node_str [] ="distribute"
 
constexpr char gen_wk_node_root_str [] ="distribute_root"
 
constexpr char algo_reduction_str [] ="algo_reduction"
 

Typedef Documentation

◆ thread_t_m

◆ thread_t_s

Enumeration Type Documentation

◆ scheduler_min_max_priorities

Enumerator
scheduler_min_priority 
scheduler_max_priority 

Definition at line 33 of file scheduler_priorities.hpp.

◆ scheduler_policy

Enumerator
schedule_policy 

Definition at line 29 of file scheduler_priorities.hpp.

Function Documentation

◆ operator<<() [1/3]

template<generic_traits::api_type API, typename Mdl >
tostream& __fastcall FORCE_INLINE jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::operator<< ( tostream os,
thread_base< API, Mdl > const &  th 
)
inline
Todo:
Implement using the advice given in "Standard C++ IOStreams and Locales" by A.Langer & K.Kreft, page 170.

Definition at line 136 of file thread_base.hpp.

◆ operator<<() [2/3]

template<class DM1 , pool_traits::size_mode_t Ps1, typename PTT1 , class Pt1 >
tostream& __fastcall jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::operator<< ( tostream os,
thread_pool_base< DM1, Ps1, PTT1, Pt1 > const &  t 
)
inline
Todo:
Implement using the advice given in "Standard C++ IOStreams and Locales" by A.Langer & K.Kreft, page 170.

Definition at line 1705 of file thread_pool_base_impl.hpp.

◆ operator<<() [3/3]

template<class DM1 , pool_traits::size_mode_t Ps1, typename PTT1 , class Pt1 >
tostream& __fastcall jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::operator<< ( tostream os,
thread_pool_queue_model< DM1, Ps1, PTT1, Pt1 > const &  t 
)
inline

Definition at line 259 of file thread_pool_queue_model_impl.hpp.

Variable Documentation

◆ algo_reduction_str

constexpr char jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::algo_reduction_str[] ="algo_reduction"
inlineconstexpr

Definition at line 37 of file thread_client_context.hpp.

◆ arg_str

const char jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::arg_str[] ="arg"

◆ ascending_lhs_str

const char jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::ascending_lhs_str[] ="ascending_lhs"

◆ binary_fun_str

const char jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::binary_fun_str[] ="binary_fun"

◆ combine1_str

const char jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::combine1_str[] ="combine1"

Definition at line 35 of file parallel_algorithms.hpp.

◆ combine2_str

const char jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::combine2_str[] ="combine2"

Definition at line 36 of file parallel_algorithms.hpp.

◆ descending_rhs_str

const char jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::descending_rhs_str[] ="descending_rhs"

◆ gen_wk_node_root_str

constexpr char jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::gen_wk_node_root_str[] ="distribute_root"
inlineconstexpr

Definition at line 36 of file thread_client_context.hpp.

◆ gen_wk_node_str

constexpr char jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::gen_wk_node_str[] ="distribute"
inlineconstexpr

Definition at line 35 of file thread_client_context.hpp.

◆ lhs_merge_str

const char jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::lhs_merge_str[] ="lhs_merge"

◆ lhs_str

const char jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::lhs_str[] ="lhs"

◆ merge_str

const char jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::merge_str[] ="merge"

◆ rhs_merge_str

const char jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::rhs_merge_str[] ="rhs_merge"

◆ rhs_str

const char jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::rhs_str[] ="rhs"

◆ shuffle_str

const char jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::shuffle_str[] ="shuffle"

◆ unary_fun_str

const char jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::unary_fun_str[] ="unary_fun"