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

Methods

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)

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)

Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:265

Parameters

threads::policies::scheduler_mode mode

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()

Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:67

pika::threads::thread_pool_base& default_pool()
    const

Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:73

pika::threads::threadmanager::scheduler_type&
default_scheduler() const

Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:75

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

Description

////////////////////////////////////////////////////////////////////////

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()

Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:175

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)

Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:372

Parameters

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()

Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:171

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

Description

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

Declared 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

Declared 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

Declared 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

Declared 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

Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:251

Parameters

const std::string& pool_name

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)

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)

Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:336

Parameters

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)

Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:356

Parameters

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)

Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:351

Parameters

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

Description

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()

Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:66

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()

Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:137

bool is_idle()

Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:138

bool pool_exists(
    const std::string& pool_name) const

Declared 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

Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:82

Parameters

std::size_t pool_index

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)

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)

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)

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)

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()

Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:292

void resume()

Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:145

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)

Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:257

Parameters

threads::policies::scheduler_mode mode

pika::state status() const

Description

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)

Description

Forcefully stop the thread-manager

Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:135

Parameters

bool blocking = true

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)>())

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()

Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:139

~threadmanager()

Declared at: libs/pika/threadmanager/include/pika/modules/threadmanager.hpp:64