class thread_pool_base
Declaration
class thread_pool_base { /* full declaration omitted */ };Description
The base class used to manage a pool of OS threads.
Declared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:166
Member Variables
- protected pika::threads::pool_id_type id_
- \condNOINTERNAL
- protected std::size_t thread_offset_
- protected const pika::detail::affinity_data& affinity_data_
- protected double timestamp_scale_
- protected threads::policies::callback_notifier& notifier_
Method Overview
- public virtual void abort_all_suspended_threads()
- public virtual bool cleanup_terminated(bool)
- public virtual void create_thread(pika::threads::thread_init_data & data, pika::threads::thread_id_ref_type & id, pika::error_code & ec)
- public virtual pika::threads::thread_id_ref_type create_work(pika::threads::thread_init_data & data, pika::error_code & ec)
- public virtual void do_some_work(std::size_t)
- public virtual bool enumerate_threads(const util::function<bool (thread_id_type)> &, pika::threads::thread_schedule_state = thread_schedule_state::unknown) const
- public virtual std::size_t get_active_os_thread_count() const
- public virtual std::int64_t get_background_thread_count()
- public virtual std::int64_t get_busy_loop_count(std::size_t num, bool reset)
- public virtual std::int64_t get_cumulative_duration(std::size_t, bool)
- public virtual std::int64_t get_executed_thread_phases(std::size_t, bool)
- public virtual std::int64_t get_executed_threads(std::size_t, bool)
- public virtual std::int64_t get_idle_core_count() const
- public virtual void get_idle_core_mask(detail::mask_type &) const
- public virtual std::int64_t get_idle_loop_count(std::size_t num, bool reset)
- public detail::hwloc_bitmap_ptr get_numa_domain_bitmap() const
- public virtual std::size_t get_os_thread_count() const
- public virtual std::thread & get_os_thread_handle(std::size_t num_thread)
- public pika::threads::pool_id_type get_pool_id() const
- public std::size_t get_pool_index() const
- public const std::string & get_pool_name() const
- public virtual std::int64_t get_queue_length(std::size_t, bool)
- public virtual policies::scheduler_base * get_scheduler() const
- public virtual std::int64_t get_scheduler_utilization() const
- public virtual pika::state get_state() const
- public virtual pika::state get_state(std::size_t num_thread) const
- public virtual std::int64_t get_thread_count(pika::threads::thread_schedule_state, pika::threads::thread_priority, std::size_t, bool)
- public std::int64_t get_thread_count_active(std::size_t num_thread, bool reset)
- public std::int64_t get_thread_count_pending(std::size_t num_thread, bool reset)
- public std::int64_t get_thread_count_staged(std::size_t num_thread, bool reset)
- public std::int64_t get_thread_count_suspended(std::size_t num_thread, bool reset)
- public std::int64_t get_thread_count_terminated(std::size_t num_thread, bool reset)
- public std::int64_t get_thread_count_unknown(std::size_t num_thread, bool reset)
- public std::size_t get_thread_offset() const
- public detail::mask_type get_used_processing_units() const
- public virtual bool has_reached_state(pika::state s) const
- public virtual void init(std::size_t num_threads, std::size_t threads_offset)
- protected void init_pool_time_scale()
- public virtual bool is_busy()
- public virtual bool is_idle()
- public virtual void print_pool(std::ostream &)
- public virtual void report_error(std::size_t global_thread_num, const std::exception_ptr & e)
- public virtual void reset_thread_distribution()
- public virtual void resume_direct(pika::error_code & ec = throws)
- public virtual void resume_processing_unit_direct(std::size_t virt_core, pika::error_code & ec = throws)
- public virtual bool run(std::unique_lock<std::mutex> & l, std::size_t num_threads)
- public virtual 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 virtual void stop(std::unique_lock<std::mutex> & l, bool blocking = true)
- public virtual void suspend_direct(pika::error_code & ec = throws)
- public virtual void suspend_processing_unit_direct(std::size_t virt_core, pika::error_code & ec = throws)
- public thread_pool_base(const pika::threads::thread_pool_init_parameters & init)
- public double timestamp_scale() const
- public virtual void wait()
- public virtual ~thread_pool_base()
Methods
virtual void abort_all_suspended_threads()
virtual void abort_all_suspended_threads()Declared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:507
virtual bool cleanup_terminated(bool)
virtual bool cleanup_terminated(bool)Declared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:508
Parameters
- bool
virtual void create_thread(
pika::threads::thread_init_data& data,
pika::threads::thread_id_ref_type& id,
pika::error_code& ec)
virtual void create_thread(
pika::threads::thread_init_data& data,
pika::threads::thread_id_ref_type& id,
pika::error_code& ec)Declared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:241
Parameters
virtual pika::threads::thread_id_ref_type
create_work(pika::threads::thread_init_data& data,
pika::error_code& ec)
virtual pika::threads::thread_id_ref_type
create_work(pika::threads::thread_init_data& data,
pika::error_code& ec)Declared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:243
Parameters
virtual void do_some_work(std::size_t)
virtual void do_some_work(std::size_t)Declared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:518
Parameters
virtual bool enumerate_threads(
const util::function<bool(thread_id_type)>&,
pika::threads::thread_schedule_state =
thread_schedule_state::unknown) const
virtual bool enumerate_threads(
const util::function<bool(thread_id_type)>&,
pika::threads::thread_schedule_state =
thread_schedule_state::unknown) constDescription
////////////////////////////////////////////////////////////////////
Declared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:497
Parameters
- const util::function<bool(thread_id_type)>&
- pika::threads::thread_schedule_state = thread_schedule_state::unknown
virtual std::size_t get_active_os_thread_count()
const
virtual std::size_t get_active_os_thread_count()
constDeclared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:239
virtual std::int64_t get_background_thread_count()
virtual std::int64_t get_background_thread_count()Declared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:449
virtual std::int64_t get_busy_loop_count(
std::size_t num,
bool reset)
virtual std::int64_t get_busy_loop_count(
std::size_t num,
bool reset)Declared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:493
Parameters
- std::size_t num
- bool reset
virtual std::int64_t get_cumulative_duration(
std::size_t,
bool)
virtual std::int64_t get_cumulative_duration(
std::size_t,
bool)Declared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:317
Parameters
- std::size_t
- bool
virtual std::int64_t get_executed_thread_phases(
std::size_t,
bool)
virtual std::int64_t get_executed_thread_phases(
std::size_t,
bool)Declared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:278
Parameters
- std::size_t
- bool
virtual std::int64_t get_executed_threads(
std::size_t,
bool)
virtual std::int64_t get_executed_threads(
std::size_t,
bool)Declared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:273
Parameters
- std::size_t
- bool
virtual std::int64_t get_idle_core_count() const
virtual std::int64_t get_idle_core_count() constDeclared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:442
virtual void get_idle_core_mask(
detail::mask_type&) const
virtual void get_idle_core_mask(
detail::mask_type&) constDeclared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:447
Parameters
- detail::mask_type&
virtual std::int64_t get_idle_loop_count(
std::size_t num,
bool reset)
virtual std::int64_t get_idle_loop_count(
std::size_t num,
bool reset)Declared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:491
Parameters
- std::size_t num
- bool reset
detail::hwloc_bitmap_ptr get_numa_domain_bitmap()
const
detail::hwloc_bitmap_ptr get_numa_domain_bitmap()
constDeclared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:269
virtual std::size_t get_os_thread_count() const
virtual std::size_t get_os_thread_count() constDescription
\condNOINTERNAL
Declared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:235
virtual std::thread& get_os_thread_handle(
std::size_t num_thread)
virtual std::thread& get_os_thread_handle(
std::size_t num_thread)Declared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:237
Parameters
- std::size_t num_thread
pika::threads::pool_id_type get_pool_id() const
pika::threads::pool_id_type get_pool_id() constDeclared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:188
std::size_t get_pool_index() const
std::size_t get_pool_index() constDeclared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:250
const std::string& get_pool_name() const
const std::string& get_pool_name() constDeclared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:254
virtual std::int64_t get_queue_length(std::size_t,
bool)
virtual std::int64_t get_queue_length(std::size_t,
bool)Declared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:383
Parameters
- std::size_t
- bool
virtual policies::scheduler_base* get_scheduler()
const
virtual policies::scheduler_base* get_scheduler()
constDeclared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:263
virtual std::int64_t get_scheduler_utilization()
const
virtual std::int64_t get_scheduler_utilization()
constDeclared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:489
virtual pika::state get_state() const
virtual pika::state get_state() constDeclared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:513
virtual pika::state get_state(
std::size_t num_thread) const
virtual pika::state get_state(
std::size_t num_thread) constDeclared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:514
Parameters
- std::size_t num_thread
virtual std::int64_t get_thread_count(
pika::threads::thread_schedule_state,
pika::threads::thread_priority,
std::size_t,
bool)
virtual std::int64_t get_thread_count(
pika::threads::thread_schedule_state,
pika::threads::thread_priority,
std::size_t,
bool)Declared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:435
Parameters
- pika::threads::thread_schedule_state
- pika::threads::thread_priority
- std::size_t
- bool
std::int64_t get_thread_count_active(
std::size_t num_thread,
bool reset)
std::int64_t get_thread_count_active(
std::size_t num_thread,
bool reset)Declared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:460
Parameters
- std::size_t num_thread
- bool reset
std::int64_t get_thread_count_pending(
std::size_t num_thread,
bool reset)
std::int64_t get_thread_count_pending(
std::size_t num_thread,
bool reset)Declared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:465
Parameters
- std::size_t num_thread
- bool reset
std::int64_t get_thread_count_staged(
std::size_t num_thread,
bool reset)
std::int64_t get_thread_count_staged(
std::size_t num_thread,
bool reset)Declared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:483
Parameters
- std::size_t num_thread
- bool reset
std::int64_t get_thread_count_suspended(
std::size_t num_thread,
bool reset)
std::int64_t get_thread_count_suspended(
std::size_t num_thread,
bool reset)Declared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:471
Parameters
- std::size_t num_thread
- bool reset
std::int64_t get_thread_count_terminated(
std::size_t num_thread,
bool reset)
std::int64_t get_thread_count_terminated(
std::size_t num_thread,
bool reset)Declared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:477
Parameters
- std::size_t num_thread
- bool reset
std::int64_t get_thread_count_unknown(
std::size_t num_thread,
bool reset)
std::int64_t get_thread_count_unknown(
std::size_t num_thread,
bool reset)Declared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:454
Parameters
- std::size_t num_thread
- bool reset
std::size_t get_thread_offset() const
std::size_t get_thread_offset() constDeclared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:258
detail::mask_type get_used_processing_units()
const
detail::mask_type get_used_processing_units()
constDeclared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:268
virtual bool has_reached_state(
pika::state s) const
virtual bool has_reached_state(
pika::state s) constDeclared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:516
Parameters
- pika::state s
virtual void init(std::size_t num_threads,
std::size_t threads_offset)
virtual void init(std::size_t num_threads,
std::size_t threads_offset)Declared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:174
Parameters
- std::size_t num_threads
- std::size_t threads_offset
void init_pool_time_scale()
void init_pool_time_scale()Description
\condNOINTERNAL
Declared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:534
virtual bool is_busy()
virtual bool is_busy()Declared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:183
virtual bool is_idle()
virtual bool is_idle()Declared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:184
virtual void print_pool(std::ostream&)
virtual void print_pool(std::ostream&)Declared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:186
Parameters
- std::ostream&
virtual void report_error(
std::size_t global_thread_num,
const std::exception_ptr& e)
virtual void report_error(
std::size_t global_thread_num,
const std::exception_ptr& e)Declared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:520
Parameters
- std::size_t global_thread_num
- const std::exception_ptr& e
virtual void reset_thread_distribution()
virtual void reset_thread_distribution()Declared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:505
virtual void resume_direct(
pika::error_code& ec = throws)
virtual 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/threading_base/include/pika/threading_base/thread_pool_base.hpp:217
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.
virtual void resume_processing_unit_direct(
std::size_t virt_core,
pika::error_code& ec = throws)
virtual void resume_processing_unit_direct(
std::size_t virt_core,
pika::error_code& ec = throws)Description
Resumes the given processing unit. Blocks until the processing unit has been resumed.
Declared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:208
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& ec = throws
virtual bool run(std::unique_lock<std::mutex>& l,
std::size_t num_threads)
virtual bool run(std::unique_lock<std::mutex>& l,
std::size_t num_threads)Declared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:176
Parameters
- std::unique_lock<std::mutex>& l
- std::size_t num_threads
virtual 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)
virtual 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/threading_base/include/pika/threading_base/thread_pool_base.hpp:246
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
virtual void stop(std::unique_lock<std::mutex>& l,
bool blocking = true)
virtual void stop(std::unique_lock<std::mutex>& l,
bool blocking = true)Declared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:179
Parameters
- std::unique_lock<std::mutex>& l
- bool blocking = true
virtual void suspend_direct(
pika::error_code& ec = throws)
virtual 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/threading_base/include/pika/threading_base/thread_pool_base.hpp:231
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.
virtual void suspend_processing_unit_direct(
std::size_t virt_core,
pika::error_code& ec = throws)
virtual void suspend_processing_unit_direct(
std::size_t virt_core,
pika::error_code& ec = throws)Description
Suspends the given processing unit. Blocks until the processing unit has been suspended.
Declared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:200
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& ec = throws
thread_pool_base(
const pika::threads::
thread_pool_init_parameters& init)
thread_pool_base(
const pika::threads::
thread_pool_init_parameters& init)Description
\condNOINTERNAL
Declared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:170
Parameters
- const pika::threads::thread_pool_init_parameters& init
double timestamp_scale() const
double timestamp_scale() constDeclared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:526
virtual void wait()
virtual void wait()Declared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:182
virtual ~thread_pool_base()
virtual ~thread_pool_base()Declared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:172