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

Methods

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)

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)

Declared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:241

Parameters

pika::threads::thread_init_data& data
pika::threads::thread_id_ref_type& id
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

pika::threads::thread_init_data& data
pika::error_code& ec

virtual void do_some_work(std::size_t)

Declared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:518

Parameters

std::size_t

virtual bool enumerate_threads(
    const util::function<bool(thread_id_type)>&,
    pika::threads::thread_schedule_state =
        thread_schedule_state::unknown) const

Description

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

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

Declared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:239

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)

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)

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)

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)

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

Declared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:442

virtual void get_idle_core_mask(
    detail::mask_type&) const

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

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

Declared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:269

virtual std::size_t get_os_thread_count() const

Description

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

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

Declared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:188

std::size_t get_pool_index() const

Declared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:250

const std::string& get_pool_name() const

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

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

Declared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:263

virtual std::int64_t get_scheduler_utilization()
    const

Declared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:489

virtual pika::state get_state() const

Declared 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

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

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)

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)

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)

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)

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)

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)

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

Declared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:258

detail::mask_type get_used_processing_units()
    const

Declared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:268

virtual bool has_reached_state(
    pika::state s) const

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

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

Description

\condNOINTERNAL

Declared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:534

virtual bool is_busy()

Declared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:183

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

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)

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

Declared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:505

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)

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)

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)

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)

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)

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)

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)

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

Declared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:526

virtual void wait()

Declared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:182

virtual ~thread_pool_base()

Declared at: libs/pika/threading_base/include/pika/threading_base/thread_pool_base.hpp:172