libjmmcg  release_579_6_g8cffd
A C++ library containing an eclectic mix of useful, advanced components.
thread_client_context.hpp File Reference
#include "../../core/dynamic_cast.hpp"
#include "../../core/non_allocatable.hpp"
#include "../../core/thread_api_traits.hpp"
#include "thread_work_closure.hpp"
#include "../../core/thread_wrapper.hpp"
#include "../../core/exception.hpp"
#include "dsel_core_work_creation.hpp"
#include <array>
#include <functional>
#include <memory>
Include dependency graph for thread_client_context.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::largest_par_alg_obj< ParAlg >
 
class  jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::setter< TT, new_priority >
 The internal class that does the priority setting and restoration as RAII. More...
 
class  jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::batch_details< GSSkSz, WQ, Stats >
 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  jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::batch_details< 1UL, WQ, Stats >
 Optimisation for when GSS(k)=GSS(1), i.e. no batching. More...
 
class  jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::horizontal_execution_itf< RD, TPB, Del, AtCtr >
 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...
 
class  jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::eraseable_execution_context_base< TPB, Del, AtCtr >
 
struct  jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::add_ref_if_not_void< Ret >
 The execution_context may need to avoid dereferencing if the result_type it contains is void. More...
 
struct  jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::add_ref_if_not_void< void >
 
struct  jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::add_ref_if_not_void< void const >
 
struct  jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::deref::noop< ExCxt >
 Just dereference the execution_context as normal. More...
 
struct  jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::deref::extra< ExCxt >
 Ensure that when the execution_context is dereferenced to obtain the result any extra dereferences are done as necessary, for example if it is a boolean. More...
 
struct  jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::deref::extra_deref< ExCxt >
 Ensure that when the execution_context is dereferenced to obtain the result any extra dereferences are done as necessary, for example if it is a count. More...
 
struct  jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::core_work_result::noop< CoreWk >
 Don't initialise the result of the execution_context. More...
 
struct  jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::core_work_result::to_zero< CoreWk >
 Default initialise the result of the execution_context. More...
 
struct  jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::core_work_result::to_false< CoreWk >
 Default initialise the boolean result of the execution_context to false. More...
 
struct  jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::core_work_result::to_op< CoreWk >
 Initialise the result of the execution_context with the provided value from the input initialisation value from the core_work. More...
 
class  jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::horizontal_execution< RD, TPB, Del, AtCtr >
 Class that implements the horizontal execution algorithm. More...
 
class  jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::horizontal_execution< RD, TPB, Del, AtCtr >::execute_any_work_horizontally::scoped
 
class  jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::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  jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::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  jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::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  jmmcg::LIBJMMCG_VER_NAMESPACE::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 >
 Enforce a sequential-consistency memory-model on the result data that this object manages, via the accessors to the result data. More...
 
class  jmmcg::LIBJMMCG_VER_NAMESPACE::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. More...
 
class  jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::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  jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::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  jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::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  jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::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...
 

Namespaces

namespace  jmmcg
 Link with -lrt to include these functions.
 
namespace  jmmcg::LIBJMMCG_VER_NAMESPACE
 
namespace  jmmcg::LIBJMMCG_VER_NAMESPACE::ppd
 Parallel Pixie Dust or PPD is the name of the thread library within libjmmcg.
 
namespace  jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_
 
namespace  jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::deref
 The execution_context may need extra dereferencing according to the result_type it contains.
 
namespace  jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::core_work_result
 

Variables

constexpr char jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::gen_wk_node_str [] ="distribute"
 
constexpr char jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::gen_wk_node_root_str [] ="distribute_root"
 
constexpr char jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::algo_reduction_str [] ="algo_reduction"