class scheduled_thread_pool
Declaration
template <typename Scheduler>
class scheduled_thread_pool : public thread_pool_base { /* full declaration omitted */ };Description
////////////////////////////////////////////////////////////////////////
Declared at: libs/pika/thread_pools/include/pika/thread_pools/scheduled_thread_pool.hpp:44
Inherits from: thread_pool_base
Member Variables
Inherited from thread_pool_base:
- protected id_
- protected thread_offset_
- protected affinity_data_
- protected timestamp_scale_
- protected notifier_
Method Overview
- public void abort_all_suspended_threads()
- protected void add_processing_unit_internal(std::size_t virt_core, std::size_t thread_num, std::shared_ptr<pika::concurrency::detail::barrier> startup, pika::error_code & ec = pika::throws)
- public bool cleanup_terminated(bool delete_all)
- public void create_thread(pika::threads::thread_init_data & data, pika::threads::thread_id_ref_type & id, pika::error_code & ec)
- public pika::threads::thread_id_ref_type create_work(pika::threads::thread_init_data & data, pika::error_code & ec)
- public void do_some_work(std::size_t num_thread)
- public bool enumerate_threads(const util::function<bool (thread_id_type)> & f, pika::threads::thread_schedule_state state) const
- public std::size_t get_active_os_thread_count() const
- public std::int64_t get_background_thread_count()
- public std::int64_t get_busy_loop_count(std::size_t num, bool reset)
- public std::int64_t get_cumulative_duration(std::size_t, bool)
- public std::int64_t get_executed_thread_phases(std::size_t, bool)
- public std::int64_t get_executed_threads() const
- public std::int64_t get_executed_threads(std::size_t, bool)
- public std::int64_t get_idle_core_count() const
- public void get_idle_core_mask(pika::threads::detail::mask_type &) const
- public std::int64_t get_idle_loop_count(std::size_t num, bool reset)
- public std::size_t get_os_thread_count() const
- public std::thread & get_os_thread_handle(std::size_t global_thread_num)
- public std::int64_t get_queue_length(std::size_t num_thread, bool)
- public threads::policies::scheduler_base * get_scheduler() const
- public std::int64_t get_scheduler_utilization() const
- public pika::state get_state() const
- public pika::state get_state(std::size_t num_thread) const
- public std::int64_t get_thread_count(pika::threads::thread_schedule_state state, pika::threads::thread_priority priority, std::size_t num, bool reset)
- public bool has_reached_state(pika::state s) const
- public void init_perf_counter_data(std::size_t pool_threads)
- public bool is_busy()
- public bool is_idle()
- public void print_pool(std::ostream & os)
- protected void remove_processing_unit_internal(std::size_t virt_core, pika::error_code & = pika::throws)
- public void report_error(std::size_t num, const std::exception_ptr & e)
- public void reset_thread_distribution()
- public void resume_direct(pika::error_code & ec = throws)
- protected void resume_internal(bool blocking, pika::error_code & ec)
- public void resume_processing_unit_direct(std::size_t virt_core, pika::error_code & = pika::throws)
- public bool run(std::unique_lock<std::mutex> & l, std::size_t pool_threads)
- public scheduled_thread_pool<Scheduler>(std::unique_ptr<Scheduler> sched, const pika::threads::thread_pool_init_parameters & init)
- public pika::threads::thread_state set_state(const pika::threads::thread_id_type & id, pika::threads::thread_schedule_state new_state, pika::threads::thread_restart_state new_state_ex, pika::threads::thread_priority priority, pika::error_code & ec)
- public void stop(std::unique_lock<std::mutex> & l, bool blocking = true)
- public template <typename Lock>void stop_locked(Lock & l, bool blocking = true)
- public void suspend_direct(pika::error_code & ec = throws)
- protected void suspend_internal(pika::error_code & ec)
- public void suspend_processing_unit_direct(std::size_t virt_core, pika::error_code & = pika::throws)
- public void thread_func(std::size_t thread_num, std::size_t global_thread_num, std::shared_ptr<pika::concurrency::detail::barrier> startup)
- public void wait()
- public virtual ~scheduled_thread_pool<Scheduler>()
Inherited from thread_pool_base:
- public abort_all_suspended_threads
- public cleanup_terminated
- public create_thread
- public create_work
- public do_some_work
- public enumerate_threads
- public get_active_os_thread_count
- public get_background_thread_count
- public get_busy_loop_count
- public get_cumulative_duration
- public get_executed_thread_phases
- public get_executed_threads
- public get_idle_core_count
- public get_idle_core_mask
- public get_idle_loop_count
- public get_numa_domain_bitmap
- public get_os_thread_count
- public get_os_thread_handle
- public get_pool_id
- public get_pool_index
- public get_pool_name
- public get_queue_length
- public get_scheduler
- public get_scheduler_utilization
- public get_state
- public get_state
- public get_thread_count
- public get_thread_count_active
- public get_thread_count_pending
- public get_thread_count_staged
- public get_thread_count_suspended
- public get_thread_count_terminated
- public get_thread_count_unknown
- public get_thread_offset
- public get_used_processing_units
- public has_reached_state
- public init
- protected init_pool_time_scale
- public is_busy
- public is_idle
- public print_pool
- public report_error
- public reset_thread_distribution
- public resume_direct
- public resume_processing_unit_direct
- public run
- public set_state
- public stop
- public suspend_direct
- public suspend_processing_unit_direct
- public timestamp_scale
- public wait
Methods
void abort_all_suspended_threads()
void abort_all_suspended_threads()Declared at: libs/pika/thread_pools/include/pika/thread_pools/scheduled_thread_pool.hpp:87
void add_processing_unit_internal(
std::size_t virt_core,
std::size_t thread_num,
std::shared_ptr<
pika::concurrency::detail::barrier>
startup,
pika::error_code& ec = pika::throws)
void add_processing_unit_internal(
std::size_t virt_core,
std::size_t thread_num,
std::shared_ptr<
pika::concurrency::detail::barrier>
startup,
pika::error_code& ec = pika::throws)Declared at: libs/pika/thread_pools/include/pika/thread_pools/scheduled_thread_pool.hpp:289
Parameters
- std::size_t virt_core
- std::size_t thread_num
- std::shared_ptr< pika::concurrency::detail::barrier> startup
- pika::error_code& ec = pika::throws
bool cleanup_terminated(bool delete_all)
bool cleanup_terminated(bool delete_all)Declared at: libs/pika/thread_pools/include/pika/thread_pools/scheduled_thread_pool.hpp:92
Parameters
- bool delete_all
void create_thread(
pika::threads::thread_init_data& data,
pika::threads::thread_id_ref_type& id,
pika::error_code& ec)
void create_thread(
pika::threads::thread_init_data& data,
pika::threads::thread_id_ref_type& id,
pika::error_code& ec)Declared at: libs/pika/thread_pools/include/pika/thread_pools/scheduled_thread_pool.hpp:74
Parameters
pika::threads::thread_id_ref_type create_work(
pika::threads::thread_init_data& data,
pika::error_code& ec)
pika::threads::thread_id_ref_type create_work(
pika::threads::thread_init_data& data,
pika::error_code& ec)Declared at: libs/pika/thread_pools/include/pika/thread_pools/scheduled_thread_pool.hpp:77
Parameters
void do_some_work(std::size_t num_thread)
void do_some_work(std::size_t num_thread)Description
////////////////////////////////////////////////////////////////
Declared at: libs/pika/thread_pools/include/pika/thread_pools/scheduled_thread_pool.hpp:69
Parameters
- std::size_t num_thread
bool enumerate_threads(
const util::function<bool(thread_id_type)>& f,
pika::threads::thread_schedule_state state)
const
bool enumerate_threads(
const util::function<bool(thread_id_type)>& f,
pika::threads::thread_schedule_state state)
constDescription
////////////////////////////////////////////////////////////////////
Declared at: libs/pika/thread_pools/include/pika/thread_pools/scheduled_thread_pool.hpp:113
Parameters
- const util::function<bool(thread_id_type)>& f
- pika::threads::thread_schedule_state state
std::size_t get_active_os_thread_count() const
std::size_t get_active_os_thread_count() constDeclared at: libs/pika/thread_pools/include/pika/thread_pools/scheduled_thread_pool.hpp:163
std::int64_t get_background_thread_count()
std::int64_t get_background_thread_count()Declared at: libs/pika/thread_pools/include/pika/thread_pools/scheduled_thread_pool.hpp:108
std::int64_t get_busy_loop_count(std::size_t num,
bool reset)
std::int64_t get_busy_loop_count(std::size_t num,
bool reset)Declared at: libs/pika/thread_pools/include/pika/thread_pools/scheduled_thread_pool.hpp:278
Parameters
- std::size_t num
- bool reset
std::int64_t get_cumulative_duration(std::size_t,
bool)
std::int64_t get_cumulative_duration(std::size_t,
bool)Declared at: libs/pika/thread_pools/include/pika/thread_pools/scheduled_thread_pool.hpp:251
Parameters
- std::size_t
- bool
std::int64_t get_executed_thread_phases(
std::size_t,
bool)
std::int64_t get_executed_thread_phases(
std::size_t,
bool)Declared at: libs/pika/thread_pools/include/pika/thread_pools/scheduled_thread_pool.hpp:240
Parameters
- std::size_t
- bool
std::int64_t get_executed_threads() const
std::int64_t get_executed_threads() constDeclared at: libs/pika/thread_pools/include/pika/thread_pools/scheduled_thread_pool.hpp:236
std::int64_t get_executed_threads(std::size_t,
bool)
std::int64_t get_executed_threads(std::size_t,
bool)Declared at: libs/pika/thread_pools/include/pika/thread_pools/scheduled_thread_pool.hpp:239
Parameters
- std::size_t
- bool
std::int64_t get_idle_core_count() const
std::int64_t get_idle_core_count() constDeclared at: libs/pika/thread_pools/include/pika/thread_pools/scheduled_thread_pool.hpp:104
void get_idle_core_mask(
pika::threads::detail::mask_type&) const
void get_idle_core_mask(
pika::threads::detail::mask_type&) constDeclared at: libs/pika/thread_pools/include/pika/thread_pools/scheduled_thread_pool.hpp:106
Parameters
- pika::threads::detail::mask_type&
std::int64_t get_idle_loop_count(std::size_t num,
bool reset)
std::int64_t get_idle_loop_count(std::size_t num,
bool reset)Declared at: libs/pika/thread_pools/include/pika/thread_pools/scheduled_thread_pool.hpp:277
Parameters
- std::size_t num
- bool reset
std::size_t get_os_thread_count() const
std::size_t get_os_thread_count() constDescription
\condNOINTERNAL
Declared at: libs/pika/thread_pools/include/pika/thread_pools/scheduled_thread_pool.hpp:158
std::thread& get_os_thread_handle(
std::size_t global_thread_num)
std::thread& get_os_thread_handle(
std::size_t global_thread_num)Description
////////////////////////////////////////////////////////////////
Declared at: libs/pika/thread_pools/include/pika/thread_pools/scheduled_thread_pool.hpp:146
Parameters
- std::size_t global_thread_num
std::int64_t get_queue_length(
std::size_t num_thread,
bool)
std::int64_t get_queue_length(
std::size_t num_thread,
bool)Declared at: libs/pika/thread_pools/include/pika/thread_pools/scheduled_thread_pool.hpp:216
Parameters
- std::size_t num_thread
- bool
threads::policies::scheduler_base* get_scheduler()
const
threads::policies::scheduler_base* get_scheduler()
constDeclared at: libs/pika/thread_pools/include/pika/thread_pools/scheduled_thread_pool.hpp:54
std::int64_t get_scheduler_utilization() const
std::int64_t get_scheduler_utilization() constDeclared at: libs/pika/thread_pools/include/pika/thread_pools/scheduled_thread_pool.hpp:279
pika::state get_state() const
pika::state get_state() constDescription
////////////////////////////////////////////////////////////////
Declared at: libs/pika/thread_pools/include/pika/thread_pools/scheduled_thread_pool.hpp:60
pika::state get_state(
std::size_t num_thread) const
pika::state get_state(
std::size_t num_thread) constDeclared at: libs/pika/thread_pools/include/pika/thread_pools/scheduled_thread_pool.hpp:61
Parameters
- std::size_t num_thread
std::int64_t get_thread_count(
pika::threads::thread_schedule_state state,
pika::threads::thread_priority priority,
std::size_t num,
bool reset)
std::int64_t get_thread_count(
pika::threads::thread_schedule_state state,
pika::threads::thread_priority priority,
std::size_t num,
bool reset)Declared at: libs/pika/thread_pools/include/pika/thread_pools/scheduled_thread_pool.hpp:97
Parameters
- pika::threads::thread_schedule_state state
- pika::threads::thread_priority priority
- std::size_t num
- bool reset
bool has_reached_state(pika::state s) const
bool has_reached_state(pika::state s) constDeclared at: libs/pika/thread_pools/include/pika/thread_pools/scheduled_thread_pool.hpp:63
Parameters
- pika::state s
void init_perf_counter_data(
std::size_t pool_threads)
void init_perf_counter_data(
std::size_t pool_threads)Declared at: libs/pika/thread_pools/include/pika/thread_pools/scheduled_thread_pool.hpp:301
Parameters
- std::size_t pool_threads
bool is_busy()
bool is_busy()Declared at: libs/pika/thread_pools/include/pika/thread_pools/scheduled_thread_pool.hpp:134
bool is_idle()
bool is_idle()Declared at: libs/pika/thread_pools/include/pika/thread_pools/scheduled_thread_pool.hpp:135
void print_pool(std::ostream& os)
void print_pool(std::ostream& os)Declared at: libs/pika/thread_pools/include/pika/thread_pools/scheduled_thread_pool.hpp:52
Parameters
- std::ostream& os
void remove_processing_unit_internal(
std::size_t virt_core,
pika::error_code& = pika::throws)
void remove_processing_unit_internal(
std::size_t virt_core,
pika::error_code& = pika::throws)Declared at: libs/pika/thread_pools/include/pika/thread_pools/scheduled_thread_pool.hpp:287
Parameters
- std::size_t virt_core
- pika::error_code& = pika::throws
void report_error(std::size_t num,
const std::exception_ptr& e)
void report_error(std::size_t num,
const std::exception_ptr& e)Declared at: libs/pika/thread_pools/include/pika/thread_pools/scheduled_thread_pool.hpp:84
Parameters
- std::size_t num
- const std::exception_ptr& e
void reset_thread_distribution()
void reset_thread_distribution()Declared at: libs/pika/thread_pools/include/pika/thread_pools/scheduled_thread_pool.hpp:119
void resume_direct(pika::error_code& ec = throws)
void resume_direct(pika::error_code& ec = throws)Description
Resumes the thread pool. Blocks until all OS threads on the thread pool have been resumed.
Declared at: libs/pika/thread_pools/include/pika/thread_pools/scheduled_thread_pool.hpp:138
Parameters
- pika::error_code& ec = throws
- [in,out] this represents the error status on exit, if this is pre-initialized to \athe function will throw on error instead.
void resume_internal(bool blocking,
pika::error_code& ec)
void resume_internal(bool blocking,
pika::error_code& ec)Declared at: libs/pika/thread_pools/include/pika/thread_pools/scheduled_thread_pool.hpp:284
Parameters
- bool blocking
- pika::error_code& ec
void resume_processing_unit_direct(
std::size_t virt_core,
pika::error_code& = pika::throws)
void resume_processing_unit_direct(
std::size_t virt_core,
pika::error_code& = pika::throws)Description
Resumes the given processing unit. Blocks until the processing unit has been resumed.
Declared at: libs/pika/thread_pools/include/pika/thread_pools/scheduled_thread_pool.hpp:142
Parameters
- std::size_t virt_core
- [in] The processing unit on the the pool to be resumed. The processing units are indexed starting from 0.
- pika::error_code& = pika::throws
bool run(std::unique_lock<std::mutex>& l,
std::size_t pool_threads)
bool run(std::unique_lock<std::mutex>& l,
std::size_t pool_threads)Description
////////////////////////////////////////////////////////////////
Declared at: libs/pika/thread_pools/include/pika/thread_pools/scheduled_thread_pool.hpp:125
Parameters
- std::unique_lock<std::mutex>& l
- std::size_t pool_threads
scheduled_thread_pool<Scheduler>(
std::unique_ptr<Scheduler> sched,
const pika::threads::
thread_pool_init_parameters& init)
scheduled_thread_pool<Scheduler>(
std::unique_ptr<Scheduler> sched,
const pika::threads::
thread_pool_init_parameters& init)Description
////////////////////////////////////////////////////////////////
Declared at: libs/pika/thread_pools/include/pika/thread_pools/scheduled_thread_pool.hpp:48
Parameters
- std::unique_ptr<Scheduler> sched
- const pika::threads::thread_pool_init_parameters& init
pika::threads::thread_state set_state(
const pika::threads::thread_id_type& id,
pika::threads::thread_schedule_state
new_state,
pika::threads::thread_restart_state
new_state_ex,
pika::threads::thread_priority priority,
pika::error_code& ec)
pika::threads::thread_state set_state(
const pika::threads::thread_id_type& id,
pika::threads::thread_schedule_state
new_state,
pika::threads::thread_restart_state
new_state_ex,
pika::threads::thread_priority priority,
pika::error_code& ec)Declared at: libs/pika/thread_pools/include/pika/thread_pools/scheduled_thread_pool.hpp:80
Parameters
- const pika::threads::thread_id_type& id
- pika::threads::thread_schedule_state new_state
- pika::threads::thread_restart_state new_state_ex
- pika::threads::thread_priority priority
- pika::error_code& ec
void stop(std::unique_lock<std::mutex>& l,
bool blocking = true)
void stop(std::unique_lock<std::mutex>& l,
bool blocking = true)Declared at: libs/pika/thread_pools/include/pika/thread_pools/scheduled_thread_pool.hpp:130
Parameters
- std::unique_lock<std::mutex>& l
- bool blocking = true
template <typename Lock>
void stop_locked(Lock& l, bool blocking = true)
template <typename Lock>
void stop_locked(Lock& l, bool blocking = true)Declared at: libs/pika/thread_pools/include/pika/thread_pools/scheduled_thread_pool.hpp:129
Parameters
- Lock& l
- bool blocking = true
void suspend_direct(pika::error_code& ec = throws)
void suspend_direct(pika::error_code& ec = throws)Description
Suspends the thread pool. Blocks until all OS threads on the thread pool have been suspended.
Declared at: libs/pika/thread_pools/include/pika/thread_pools/scheduled_thread_pool.hpp:137
Parameters
- pika::error_code& ec = throws
- [in,out] this represents the error status on exit, if this is pre-initialized to \athe function will throw on error instead.
void suspend_internal(pika::error_code& ec)
void suspend_internal(pika::error_code& ec)Declared at: libs/pika/thread_pools/include/pika/thread_pools/scheduled_thread_pool.hpp:285
Parameters
- pika::error_code& ec
void suspend_processing_unit_direct(
std::size_t virt_core,
pika::error_code& = pika::throws)
void suspend_processing_unit_direct(
std::size_t virt_core,
pika::error_code& = pika::throws)Description
Suspends the given processing unit. Blocks until the processing unit has been suspended.
Declared at: libs/pika/thread_pools/include/pika/thread_pools/scheduled_thread_pool.hpp:140
Parameters
- std::size_t virt_core
- [in] The processing unit on the the pool to be suspended. The processing units are indexed starting from 0.
- pika::error_code& = pika::throws
void thread_func(
std::size_t thread_num,
std::size_t global_thread_num,
std::shared_ptr<
pika::concurrency::detail::barrier>
startup)
void thread_func(
std::size_t thread_num,
std::size_t global_thread_num,
std::shared_ptr<
pika::concurrency::detail::barrier>
startup)Declared at: libs/pika/thread_pools/include/pika/thread_pools/scheduled_thread_pool.hpp:155
Parameters
- std::size_t thread_num
- std::size_t global_thread_num
- std::shared_ptr< pika::concurrency::detail::barrier> startup
void wait()
void wait()Declared at: libs/pika/thread_pools/include/pika/thread_pools/scheduled_thread_pool.hpp:133
virtual ~scheduled_thread_pool<Scheduler>()
virtual ~scheduled_thread_pool<Scheduler>()Declared at: libs/pika/thread_pools/include/pika/thread_pools/scheduled_thread_pool.hpp:50