libjmmcg  release_579_6_g8cffd
A C++ library containing an eclectic mix of useful, advanced components.
thread_pool_aspects.hpp File Reference
#include "batch.hpp"
#include "intrusive.hpp"
#include "priority_queue.hpp"
#include "thread_os_traits.hpp"
#include "thread_statistics.hpp"
#include <array>
#include <queue>
Include dependency graph for thread_pool_aspects.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::lock::new_event_signal< St, UnSig, Pri, api_lock_traits< platform_api, sequential_mode >::critical_section_type >
 
struct  jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::no_op< T >
 
struct  jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::def_key_compare< T, V >
 
struct  jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_::def_key_compare< no_op, V >
 
struct  jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::pool_traits::private_::thread_pool_queue_details_back_batch_queue< pool_traits::work_distribution_mode_t::queue_model_t::pool_owns_queue, EvSts, CST, Stats, Cont, GSSk >
 
struct  jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::pool_traits::private_::thread_pool_queue_details_back_batch_queue< pool_traits::work_distribution_mode_t::queue_model_t::thread_owns_queue< SM >, EvSts, CST, Stats, Cont, GSSk >
 
struct  jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::pool_traits::private_::thread_pool_queue_details_front_batch_priority_queue< pool_traits::work_distribution_mode_t::queue_model_t::pool_owns_queue, EvSts, Stats, V, Comp, GSSk >
 
struct  jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::pool_traits::private_::pool_thread_queue_details< TPQD< pool_traits::work_distribution_mode_t::queue_model_t::pool_owns_queue >, GSSk >
 The pool_threads share a signalled_work_queue in the thread_pool. More...
 
struct  jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::pool_traits::private_::pool_thread_queue_details< TPQD< pool_traits::work_distribution_mode_t::queue_model_t::thread_owns_queue< SM > >, GSSk >
 The pool_threads own a signalled_work_queue each, which must be thread-safe, possibly lock-free. More...
 
struct  jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::pool_traits::normal_fifo< V, Comp, EvSts, GSSk, Stats >
 The signalled_work_queue_type within the thread_pool will obey strict FIFO semantics. More...
 
struct  jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::pool_traits::normal_fifo< V, Comp, EvSts, GSSk, Stats >::thread_pool_queue_details< QM >
 
struct  jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::pool_traits::normal_lifo< V, Comp, EvSts, GSSk, Stats >
 The signalled_work_queue_type within the thread_pool will obey strict LIFO semantics. More...
 
struct  jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::pool_traits::normal_lifo< V, Comp, EvSts, GSSk, Stats >::adaptor
 Adapt the stack to look like a list. More...
 
struct  jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::pool_traits::normal_lifo< V, Comp, EvSts, GSSk, Stats >::thread_pool_queue_details< QM >
 
struct  jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::pool_traits::normal_lifo_lockfree< V, Comp, EvSts, GSSk, Stats >
 The signalled_work_queue_type within the thread_pool will obey strict LIFO semantics. More...
 
struct  jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::pool_traits::normal_lifo_lockfree< V, Comp, EvSts, GSSk, Stats >::lockfree_to_safe_colln
 Adapt the stack to look like a list. More...
 
struct  jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::pool_traits::normal_lifo_lockfree< V, Comp, EvSts, GSSk, Stats >::thread_pool_queue_details< QM >
 
struct  jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::pool_traits::prioritised_queue< V, Comp, EvSts, GSSk, Stats >
 The signalled_work_queue_type within the thread_pool will operate upon work in some user-defined partial order. More...
 
struct  jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::pool_traits::prioritised_queue< V, Comp, EvSts, GSSk, Stats >::thread_pool_queue_details< QM >
 
struct  jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::pool_aspects< RD, API, Mdl, PM, Comp, GSSkSz, Stats, CFG >
 The fundamental way to specify the type of thread_pool that is required. More...
 
struct  jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::pool_aspects< RD, API, Mdl, PM, Comp, GSSkSz, Stats, CFG >::thread_wk< generic_traits::return_data::joinable, ThrW, WFlg, Del, AtCtr >
 Some classes used as short-hands. More...
 
struct  jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::pool_aspects< RD, API, Mdl, PM, Comp, GSSkSz, Stats, CFG >::thread_wk< generic_traits::return_data::nonjoinable, ThrW, WFlg, Del, AtCtr >
 Some classes used as short-hands. More...
 
struct  jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::pool_aspects< RD, API, Mdl, PM, Comp, GSSkSz, Stats, CFG >::algo_thread_wk< ThrW, WFlg, Del, AtCtr >
 Some classes used as short-hands. More...
 
struct  jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::pool_aspects< RD, API, Mdl, PM, Comp, GSSkSz, Stats, CFG >::algo_thread_wk_buffered< ThrW, WFlg, SubDivAlgWk, Del, AtCtr >
 Some classes used as short-hands. 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::lock
 
namespace  jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::private_
 
namespace  jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::pool_traits
 A namespace to hold various traits relating to selecting the specific specialisation of thread_pool they would like.
 
namespace  jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::pool_traits::private_
 

Enumerations

enum class  jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::pool_traits::states { jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::pool_traits::unsignalled , jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::pool_traits::exit_requested , jmmcg::LIBJMMCG_VER_NAMESPACE::ppd::pool_traits::new_work_arrived }
 The states in which the signalled_work_queue_type can be. More...