struct queue_holder_thread

Declaration

template <typename QueueType>
struct queue_holder_thread { /* full declaration omitted */ };

Declared at: libs/pika/schedulers/include/pika/schedulers/queue_holder_thread.hpp:76

Member Variables

public QueueType* const bp_queue_
public QueueType* const hp_queue_
public QueueType* const np_queue_
public QueueType* const lp_queue_
public const std::size_t domain_index_
public const std::size_t queue_index_
public const std::size_t thread_num_
public const std::size_t owner_mask_
public pika::concurrency::detail::cache_line_data< mutex_type> thread_map_mtx_
public pika::threads::policies::queue_holder_thread:: thread_heap_type thread_heap_small_
public pika::threads::policies::queue_holder_thread:: thread_heap_type thread_heap_medium_
public pika::threads::policies::queue_holder_thread:: thread_heap_type thread_heap_large_
public pika::threads::policies::queue_holder_thread:: thread_heap_type thread_heap_huge_
public pika::threads::policies::queue_holder_thread:: thread_heap_type thread_heap_nostack_
public pika::concurrency::detail::cache_line_data< std::tuple<std::size_t, std::size_t>> rollover_counters_
public pika::threads::policies::queue_holder_thread:: thread_map_type thread_map_
public pika::concurrency::detail::cache_line_data< std::atomic<std::int32_t>> thread_map_count_
public pika::threads::policies::queue_holder_thread:: terminated_items_type terminated_items_
public pika::concurrency::detail::cache_line_data< std::atomic<std::int32_t>> terminated_items_count_
public pika::threads::policies:: thread_queue_init_parameters parameters_
public std::thread::id owner_id_
public static pika::detail::internal_allocator< threads::thread_data> thread_alloc_

Method Overview

  • public void abort_all_suspended_threads()
  • public std::size_t add_new(std::int64_t add_count, pika::threads::policies::queue_holder_thread::thread_holder_type * addfrom, bool stealing)
  • public std::size_t add_new_HP(std::int64_t add_count, pika::threads::policies::queue_holder_thread::thread_holder_type * addfrom, bool stealing)
  • public void add_to_thread_map(threads::thread_id_type tid)
  • public bool cleanup_terminated(std::size_t thread_num, bool delete_all)
  • public void create_thread(pika::threads::thread_init_data & data, pika::threads::thread_id_ref_type * tid, std::size_t thread_num, pika::error_code & ec)
  • public void create_thread_object(threads::thread_id_ref_type & tid, threads::thread_init_data & data)
  • public static void deallocate(threads::thread_data * p)
  • public void debug_info()
  • public void debug_queues(const char * prefix)
  • public void destroy_thread(threads::thread_data * thrd, std::size_t thread_num, bool xthread)
  • public bool enumerate_threads(const util::function<bool (thread_id_type)> & f, pika::threads::thread_schedule_state state = thread_schedule_state::unknown) const
  • public bool get_next_thread(threads::thread_id_ref_type & thrd, bool stealing)
  • public bool get_next_thread_HP(threads::thread_id_ref_type & thrd, bool stealing, bool check_new)
  • public inline std::size_t get_queue_length()
  • public inline std::size_t get_thread_count(pika::threads::thread_schedule_state state = thread_schedule_state::unknown, pika::threads::thread_priority priority = thread_priority::default_) const
  • public inline std::size_t get_thread_count_pending(pika::threads::thread_priority priority) const
  • public inline std::size_t get_thread_count_staged(pika::threads::thread_priority priority) const
  • public inline bool owns_bp_queue() const
  • public inline bool owns_hp_queue() const
  • public inline bool owns_lp_queue() const
  • public inline bool owns_np_queue() const
  • public queue_holder_thread<QueueType>(QueueType * bp_queue, QueueType * hp_queue, QueueType * np_queue, QueueType * lp_queue, std::size_t domain, std::size_t queue, std::size_t thread_num, std::size_t owner, const pika::threads::policies::thread_queue_init_parameters & init, std::thread::id owner_id)
  • public void recycle_thread(pika::threads::thread_id_type tid)
  • public void remove_from_thread_map(threads::thread_id_type tid, bool dealloc)
  • public void schedule_thread(threads::thread_id_ref_type thrd, pika::threads::thread_priority priority, bool other_end = false)
  • public inline std::size_t worker_next(const std::size_t workers) const
  • public ~queue_holder_thread<QueueType>()

Methods

void abort_all_suspended_threads()

Declared at: libs/pika/schedulers/include/pika/schedulers/queue_holder_thread.hpp:930

std::size_t add_new(
    std::int64_t add_count,
    pika::threads::policies::queue_holder_thread::
        thread_holder_type* addfrom,
    bool stealing)

Declared at: libs/pika/schedulers/include/pika/schedulers/queue_holder_thread.hpp:727

Parameters

std::int64_t add_count
pika::threads::policies::queue_holder_thread:: thread_holder_type* addfrom
bool stealing

std::size_t add_new_HP(
    std::int64_t add_count,
    pika::threads::policies::queue_holder_thread::
        thread_holder_type* addfrom,
    bool stealing)

Declared at: libs/pika/schedulers/include/pika/schedulers/queue_holder_thread.hpp:704

Parameters

std::int64_t add_count
pika::threads::policies::queue_holder_thread:: thread_holder_type* addfrom
bool stealing

void add_to_thread_map(
    threads::thread_id_type tid)

Declared at: libs/pika/schedulers/include/pika/schedulers/queue_holder_thread.hpp:591

Parameters

threads::thread_id_type tid

bool cleanup_terminated(std::size_t thread_num,
                        bool delete_all)

Declared at: libs/pika/schedulers/include/pika/schedulers/queue_holder_thread.hpp:350

Parameters

std::size_t thread_num
bool delete_all

void create_thread(
    pika::threads::thread_init_data& data,
    pika::threads::thread_id_ref_type* tid,
    std::size_t thread_num,
    pika::error_code& ec)

Declared at: libs/pika/schedulers/include/pika/schedulers/queue_holder_thread.hpp:413

Parameters

pika::threads::thread_init_data& data
pika::threads::thread_id_ref_type* tid
std::size_t thread_num
pika::error_code& ec

void create_thread_object(
    threads::thread_id_ref_type& tid,
    threads::thread_init_data& data)

Declared at: libs/pika/schedulers/include/pika/schedulers/queue_holder_thread.hpp:473

Parameters

threads::thread_id_ref_type& tid
threads::thread_init_data& data

static void deallocate(threads::thread_data* p)

Declared at: libs/pika/schedulers/include/pika/schedulers/queue_holder_thread.hpp:583

Parameters

threads::thread_data* p

void debug_info()

Declared at: libs/pika/schedulers/include/pika/schedulers/queue_holder_thread.hpp:1003

void debug_queues(const char* prefix)

Declared at: libs/pika/schedulers/include/pika/schedulers/queue_holder_thread.hpp:1027

Parameters

const char* prefix

void destroy_thread(threads::thread_data* thrd,
                    std::size_t thread_num,
                    bool xthread)

Description

Destroy the passed thread as it has been terminated

Declared at: libs/pika/schedulers/include/pika/schedulers/queue_holder_thread.hpp:910

Parameters

threads::thread_data* thrd
std::size_t thread_num
bool xthread

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

Declared at: libs/pika/schedulers/include/pika/schedulers/queue_holder_thread.hpp:951

Parameters

const util::function<bool(thread_id_type)>& f
pika::threads::thread_schedule_state state = thread_schedule_state::unknown

bool get_next_thread(
    threads::thread_id_ref_type& thrd,
    bool stealing)

Declared at: libs/pika/schedulers/include/pika/schedulers/queue_holder_thread.hpp:678

Parameters

threads::thread_id_ref_type& thrd
bool stealing

bool get_next_thread_HP(
    threads::thread_id_ref_type& thrd,
    bool stealing,
    bool check_new)

Declared at: libs/pika/schedulers/include/pika/schedulers/queue_holder_thread.hpp:649

Parameters

threads::thread_id_ref_type& thrd
bool stealing
bool check_new

inline std::size_t get_queue_length()

Declared at: libs/pika/schedulers/include/pika/schedulers/queue_holder_thread.hpp:758

inline std::size_t get_thread_count(
    pika::threads::thread_schedule_state state =
        thread_schedule_state::unknown,
    pika::threads::thread_priority priority =
        thread_priority::default_) const

Declared at: libs/pika/schedulers/include/pika/schedulers/queue_holder_thread.hpp:874

Parameters

pika::threads::thread_schedule_state state = thread_schedule_state::unknown
pika::threads::thread_priority priority = thread_priority::default_

inline std::size_t get_thread_count_pending(
    pika::threads::thread_priority priority) const

Declared at: libs/pika/schedulers/include/pika/schedulers/queue_holder_thread.hpp:823

Parameters

pika::threads::thread_priority priority

inline std::size_t get_thread_count_staged(
    pika::threads::thread_priority priority) const

Declared at: libs/pika/schedulers/include/pika/schedulers/queue_holder_thread.hpp:770

Parameters

pika::threads::thread_priority priority

inline bool owns_bp_queue() const

Declared at: libs/pika/schedulers/include/pika/schedulers/queue_holder_thread.hpp:267

inline bool owns_hp_queue() const

Declared at: libs/pika/schedulers/include/pika/schedulers/queue_holder_thread.hpp:273

inline bool owns_lp_queue() const

Declared at: libs/pika/schedulers/include/pika/schedulers/queue_holder_thread.hpp:285

inline bool owns_np_queue() const

Declared at: libs/pika/schedulers/include/pika/schedulers/queue_holder_thread.hpp:279

queue_holder_thread<QueueType>(
    QueueType* bp_queue,
    QueueType* hp_queue,
    QueueType* np_queue,
    QueueType* lp_queue,
    std::size_t domain,
    std::size_t queue,
    std::size_t thread_num,
    std::size_t owner,
    const pika::threads::policies::
        thread_queue_init_parameters& init,
    std::thread::id owner_id)

Declared at: libs/pika/schedulers/include/pika/schedulers/queue_holder_thread.hpp:202

Parameters

QueueType* bp_queue
QueueType* hp_queue
QueueType* np_queue
QueueType* lp_queue
std::size_t domain
std::size_t queue
std::size_t thread_num
std::size_t owner
const pika::threads::policies:: thread_queue_init_parameters& init
std::thread::id owner_id

void recycle_thread(
    pika::threads::thread_id_type tid)

Declared at: libs/pika/schedulers/include/pika/schedulers/queue_holder_thread.hpp:550

Parameters

pika::threads::thread_id_type tid

void remove_from_thread_map(
    threads::thread_id_type tid,
    bool dealloc)

Declared at: libs/pika/schedulers/include/pika/schedulers/queue_holder_thread.hpp:627

Parameters

threads::thread_id_type tid
bool dealloc

void schedule_thread(
    threads::thread_id_ref_type thrd,
    pika::threads::thread_priority priority,
    bool other_end = false)

Declared at: libs/pika/schedulers/include/pika/schedulers/queue_holder_thread.hpp:309

Parameters

threads::thread_id_ref_type thrd
pika::threads::thread_priority priority
bool other_end = false

inline std::size_t worker_next(
    const std::size_t workers) const

Declared at: libs/pika/schedulers/include/pika/schedulers/queue_holder_thread.hpp:293

Parameters

const std::size_t workers

~queue_holder_thread<QueueType>()

Declared at: libs/pika/schedulers/include/pika/schedulers/queue_holder_thread.hpp:239