class threadmanager
Declaration
class threadmanager { /* full declaration omitted */ };Description
//////////////////////////////////////////////////////////////////////// The \aclass is the central instance of management for all (non-depleted) threads
Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:46
Method Overview
- public void abort_all_suspended_threads()
- public void add_remove_scheduler_mode(threads::policies::scheduler_mode to_add_mode, threads::policies::scheduler_mode to_remove_mode)
- public void add_scheduler_mode(threads::policies::scheduler_mode mode)
- public bool cleanup_terminated(bool delete_all)
- public void create_pools()
- public pika::threads::thread_pool_base & default_pool() const
- public pika::threads::threadmanager::scheduler_type & default_scheduler() const
- public void deinit_tss()
- public bool enumerate_threads(const util::function<bool (thread_id_type)> & f, pika::threads::thread_schedule_state state = thread_schedule_state::unknown) const
- public std::int64_t get_background_thread_count()
- public std::int64_t get_cumulative_duration(bool reset)
- public std::int64_t get_executed_thread_phases(bool reset)
- public std::int64_t get_executed_threads(bool reset)
- public std::int64_t get_idle_core_count()
- public detail::mask_type get_idle_core_mask()
- public std::size_t get_os_thread_count() const
- public std::thread & get_os_thread_handle(std::size_t num_thread) const
- public pika::threads::thread_pool_base & get_pool(const pika::threads::pool_id_type & pool_id) const
- public pika::threads::thread_pool_base & get_pool(std::size_t thread_index) const
- public pika::threads::thread_pool_base & get_pool(const std::string & pool_name) const
- public detail::hwloc_bitmap_ptr get_pool_numa_bitmap(const std::string & pool_name) const
- public std::int64_t get_queue_length(bool reset)
- public std::int64_t get_thread_count(pika::threads::thread_schedule_state state = thread_schedule_state::unknown, pika::threads::thread_priority priority = thread_priority::default_, std::size_t num_thread = unsigned long(-1), bool reset = false)
- public std::int64_t get_thread_count_active(bool reset)
- public std::int64_t get_thread_count_pending(bool reset)
- public std::int64_t get_thread_count_staged(bool reset)
- public std::int64_t get_thread_count_suspended(bool reset)
- public std::int64_t get_thread_count_terminated(bool reset)
- public std::int64_t get_thread_count_unknown(bool reset)
- public detail::mask_type get_used_processing_units() const
- public void init()
- public void init_tss(std::size_t global_thread_num)
- public bool is_busy()
- public bool is_idle()
- public bool pool_exists(const std::string & pool_name) const
- public bool pool_exists(std::size_t pool_index) const
- public void print_pools(std::ostream &)
- public void register_thread(pika::threads::thread_init_data & data, pika::threads::thread_id_ref_type & id, pika::error_code & ec = throws)
- public pika::threads::thread_id_ref_type register_work(pika::threads::thread_init_data & data, pika::error_code & ec = throws)
- public void remove_scheduler_mode(threads::policies::scheduler_mode mode)
- public void report_error(std::size_t num_thread, const std::exception_ptr & e)
- public void reset_thread_distribution()
- public void resume()
- public bool run()
- public void set_scheduler_mode(threads::policies::scheduler_mode mode)
- public pika::state status() const
- public void stop(bool blocking = true)
- public void suspend()
- public threadmanager(pika::util::runtime_configuration & rtcfg_, pika::threads::threadmanager::notification_policy_type & notifier, detail::network_background_callback_type network_background_callback = pika::util::function<bool (unsigned long)>())
- public void wait()
- public ~threadmanager()
Methods
void abort_all_suspended_threads()
void abort_all_suspended_threads()Description
////////////////////////////////////////////////////////////////////////
Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:184
void add_remove_scheduler_mode(
threads::policies::scheduler_mode to_add_mode,
threads::policies::scheduler_mode
to_remove_mode)
void add_remove_scheduler_mode(
threads::policies::scheduler_mode to_add_mode,
threads::policies::scheduler_mode
to_remove_mode)Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:273
Parameters
- threads::policies::scheduler_mode to_add_mode
- threads::policies::scheduler_mode to_remove_mode
void add_scheduler_mode(
threads::policies::scheduler_mode mode)
void add_scheduler_mode(
threads::policies::scheduler_mode mode)Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:265
Parameters
- threads::policies::scheduler_mode mode
bool cleanup_terminated(bool delete_all)
bool cleanup_terminated(bool delete_all)Description
////////////////////////////////////////////////////////////////////////
Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:190
Parameters
- bool delete_all
void create_pools()
void create_pools()Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:67
pika::threads::thread_pool_base& default_pool()
const
pika::threads::thread_pool_base& default_pool()
constDeclared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:73
pika::threads::threadmanager::scheduler_type&
default_scheduler() const
pika::threads::threadmanager::scheduler_type&
default_scheduler() constDeclared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:75
void deinit_tss()
void deinit_tss()Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:305
bool enumerate_threads(
const util::function<bool(thread_id_type)>& f,
pika::threads::thread_schedule_state state =
thread_schedule_state::unknown) const
bool enumerate_threads(
const util::function<bool(thread_id_type)>& f,
pika::threads::thread_schedule_state state =
thread_schedule_state::unknown) constDescription
////////////////////////////////////////////////////////////////////////
Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:178
Parameters
- const util::function<bool(thread_id_type)>& f
- pika::threads::thread_schedule_state state = thread_schedule_state::unknown
std::int64_t get_background_thread_count()
std::int64_t get_background_thread_count()Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:175
std::int64_t get_cumulative_duration(bool reset)
std::int64_t get_cumulative_duration(bool reset)Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:329
Parameters
- bool reset
std::int64_t get_executed_thread_phases(
bool reset)
std::int64_t get_executed_thread_phases(
bool reset)Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:372
Parameters
- bool reset
std::int64_t get_executed_threads(bool reset)
std::int64_t get_executed_threads(bool reset)Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:371
Parameters
- bool reset
std::int64_t get_idle_core_count()
std::int64_t get_idle_core_count()Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:171
detail::mask_type get_idle_core_mask()
detail::mask_type get_idle_core_mask()Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:173
std::size_t get_os_thread_count() const
std::size_t get_os_thread_count() constDescription
Return the number of OS threads running in this thread-manager
This function will return correct results only if the thread-manager is running.
Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:196
std::thread& get_os_thread_handle(
std::size_t num_thread) const
std::thread& get_os_thread_handle(
std::size_t num_thread) constDeclared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:207
Parameters
- std::size_t num_thread
pika::threads::thread_pool_base& get_pool(
const pika::threads::pool_id_type& pool_id)
const
pika::threads::thread_pool_base& get_pool(
const pika::threads::pool_id_type& pool_id)
constDeclared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:78
Parameters
- const pika::threads::pool_id_type& pool_id
pika::threads::thread_pool_base& get_pool(
std::size_t thread_index) const
pika::threads::thread_pool_base& get_pool(
std::size_t thread_index) constDeclared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:79
Parameters
- std::size_t thread_index
pika::threads::thread_pool_base& get_pool(
const std::string& pool_name) const
pika::threads::thread_pool_base& get_pool(
const std::string& pool_name) constDeclared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:77
Parameters
- const std::string& pool_name
detail::hwloc_bitmap_ptr get_pool_numa_bitmap(
const std::string& pool_name) const
detail::hwloc_bitmap_ptr get_pool_numa_bitmap(
const std::string& pool_name) constDeclared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:251
Parameters
- const std::string& pool_name
std::int64_t get_queue_length(bool reset)
std::int64_t get_queue_length(bool reset)Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:312
Parameters
- bool reset
std::int64_t get_thread_count(
pika::threads::thread_schedule_state state =
thread_schedule_state::unknown,
pika::threads::thread_priority priority =
thread_priority::default_,
std::size_t num_thread = unsigned long(-1),
bool reset = false)
std::int64_t get_thread_count(
pika::threads::thread_schedule_state state =
thread_schedule_state::unknown,
pika::threads::thread_priority priority =
thread_priority::default_,
std::size_t num_thread = unsigned long(-1),
bool reset = false)Description
return the number of pika-threads with the given state
Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:166
Parameters
- pika::threads::thread_schedule_state state = thread_schedule_state::unknown
- pika::threads::thread_priority priority = thread_priority::default_
- std::size_t num_thread = unsigned long(-1)
- bool reset = false
std::int64_t get_thread_count_active(bool reset)
std::int64_t get_thread_count_active(bool reset)Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:336
Parameters
- bool reset
std::int64_t get_thread_count_pending(bool reset)
std::int64_t get_thread_count_pending(bool reset)Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:341
Parameters
- bool reset
std::int64_t get_thread_count_staged(bool reset)
std::int64_t get_thread_count_staged(bool reset)Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:356
Parameters
- bool reset
std::int64_t get_thread_count_suspended(
bool reset)
std::int64_t get_thread_count_suspended(
bool reset)Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:346
Parameters
- bool reset
std::int64_t get_thread_count_terminated(
bool reset)
std::int64_t get_thread_count_terminated(
bool reset)Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:351
Parameters
- bool reset
std::int64_t get_thread_count_unknown(bool reset)
std::int64_t get_thread_count_unknown(bool reset)Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:331
Parameters
- bool reset
detail::mask_type get_used_processing_units()
const
detail::mask_type get_used_processing_units()
constDescription
Returns the mask identifying all processing units used by this thread manager.
Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:235
void init()
void init()Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:66
void init_tss(std::size_t global_thread_num)
void init_tss(std::size_t global_thread_num)Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:300
Parameters
- std::size_t global_thread_num
bool is_busy()
bool is_busy()Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:137
bool is_idle()
bool is_idle()Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:138
bool pool_exists(
const std::string& pool_name) const
bool pool_exists(
const std::string& pool_name) constDeclared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:81
Parameters
- const std::string& pool_name
bool pool_exists(std::size_t pool_index) const
bool pool_exists(std::size_t pool_index) constDeclared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:82
Parameters
- std::size_t pool_index
void print_pools(std::ostream&)
void print_pools(std::ostream&)Description
FIXME move to private and add --pika:printpools cmd line option
Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:70
Parameters
- std::ostream&
void register_thread(
pika::threads::thread_init_data& data,
pika::threads::thread_id_ref_type& id,
pika::error_code& ec = throws)
void register_thread(
pika::threads::thread_init_data& data,
pika::threads::thread_id_ref_type& id,
pika::error_code& ec = throws)Description
The function \aadds a new work item to the thread manager. It creates a new \aadds it to the internal management data structures, and schedules the new thread, if appropriate.
Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:118
Parameters
- pika::threads::thread_init_data& data
- pika::threads::thread_id_ref_type& id
- [out] This parameter will hold the id of the created thread. This id is guaranteed to be validly initialized before the thread function is executed.
- pika::error_code& ec = throws
pika::threads::thread_id_ref_type register_work(
pika::threads::thread_init_data& data,
pika::error_code& ec = throws)
pika::threads::thread_id_ref_type register_work(
pika::threads::thread_init_data& data,
pika::error_code& ec = throws)Description
The function \aadds a new work item to the thread manager. It doesn't immediately create a new \ait just adds the task parameters (function, initial state and description) to the internal management data structures. The thread itself will be created when the number of existing threads drops below the number of threads specified by the constructors max_count parameter.
Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:99
Parameters
- pika::threads::thread_init_data& data
- pika::error_code& ec = throws
void remove_scheduler_mode(
threads::policies::scheduler_mode mode)
void remove_scheduler_mode(
threads::policies::scheduler_mode mode)Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:284
Parameters
- threads::policies::scheduler_mode mode
void report_error(std::size_t num_thread,
const std::exception_ptr& e)
void report_error(std::size_t num_thread,
const std::exception_ptr& e)Description
This notifies the thread manager that the passed exception has been raised. The exception will be routed through the notifier and the scheduler (which will result in it being passed to the runtime object, which in turn will report it to the console, etc.).
Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:222
Parameters
- std::size_t num_thread
- const std::exception_ptr& e
void reset_thread_distribution()
void reset_thread_distribution()Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:292
void resume()
void resume()Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:145
bool run()
bool run()Description
Run the thread manager's work queue. This function instantiates the specified number of OS threads in each pool. All OS threads are started to execute the function\a
Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:129
Returns
The function returns \aif the thread manager has been started successfully, otherwise it returns\a
void set_scheduler_mode(
threads::policies::scheduler_mode mode)
void set_scheduler_mode(
threads::policies::scheduler_mode mode)Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:257
Parameters
- threads::policies::scheduler_mode mode
pika::state status() const
pika::state status() constDescription
Return whether the thread manager is still running This returns the "minimal state", i.e. the state of the least advanced thread pool
Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:150
void stop(bool blocking = true)
void stop(bool blocking = true)Description
Forcefully stop the thread-manager
Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:135
Parameters
- bool blocking = true
void suspend()
void suspend()Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:142
threadmanager(
pika::util::runtime_configuration& rtcfg_,
pika::threads::threadmanager::
notification_policy_type& notifier,
detail::network_background_callback_type
network_background_callback = pika::util::
function<bool(unsigned long)>())
threadmanager(
pika::util::runtime_configuration& rtcfg_,
pika::threads::threadmanager::
notification_policy_type& notifier,
detail::network_background_callback_type
network_background_callback = pika::util::
function<bool(unsigned long)>())Description
////////////////////////////////////////////////////////////////////////
Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:59
Parameters
- pika::util::runtime_configuration& rtcfg_
- pika::threads::threadmanager:: notification_policy_type& notifier
- detail::network_background_callback_type network_background_callback = pika::util::function<bool (unsigned long)>()
void wait()
void wait()Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:139
~threadmanager()
~threadmanager()Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:64