VeloGraphX
High-performance dynamic graph analytics in C++20
Loading...
Searching...
No Matches
velographx::WorkStealingPool Class Reference

#include <work_stealing_pool.hpp>

Public Types

using Task = std::function< void()>
 

Public Member Functions

 WorkStealingPool (std::size_t threads=std::thread::hardware_concurrency(), std::vector< std::size_t > queue_groups={})
 
 WorkStealingPool (const WorkStealingPool &)=delete
 
WorkStealingPooloperator= (const WorkStealingPool &)=delete
 
 ~WorkStealingPool ()
 
std::size_t size () const noexcept
 
std::size_t queue_group (std::size_t index) const noexcept
 
void submit (Task task, std::size_t locality_hint=0)
 
template<class Fn >
void parallel_for (std::size_t begin, std::size_t end, Fn &&fn, std::size_t grain=0)
 
void wait_idle ()
 
WorkStealingStats stats () const noexcept
 

Static Public Member Functions

static std::size_t adaptive_grain (std::size_t work_items, std::size_t threads) noexcept
 

Detailed Description

Definition at line 27 of file work_stealing_pool.hpp.

Member Typedef Documentation

◆ Task

using velographx::WorkStealingPool::Task = std::function<void()>

Definition at line 29 of file work_stealing_pool.hpp.

Constructor & Destructor Documentation

◆ WorkStealingPool() [1/2]

velographx::WorkStealingPool::WorkStealingPool ( std::size_t  threads = std::thread::hardware_concurrency(),
std::vector< std::size_t >  queue_groups = {} 
)
inlineexplicit

Definition at line 31 of file work_stealing_pool.hpp.

◆ WorkStealingPool() [2/2]

velographx::WorkStealingPool::WorkStealingPool ( const WorkStealingPool )
delete

◆ ~WorkStealingPool()

velographx::WorkStealingPool::~WorkStealingPool ( )
inline

Definition at line 45 of file work_stealing_pool.hpp.

Member Function Documentation

◆ adaptive_grain()

static std::size_t velographx::WorkStealingPool::adaptive_grain ( std::size_t  work_items,
std::size_t  threads 
)
inlinestaticnoexcept

Definition at line 99 of file work_stealing_pool.hpp.

Referenced by parallel_for().

◆ operator=()

WorkStealingPool & velographx::WorkStealingPool::operator= ( const WorkStealingPool )
delete

◆ parallel_for()

template<class Fn >
void velographx::WorkStealingPool::parallel_for ( std::size_t  begin,
std::size_t  end,
Fn &&  fn,
std::size_t  grain = 0 
)
inline

Definition at line 71 of file work_stealing_pool.hpp.

References adaptive_grain(), size(), submit(), and wait_idle().

◆ queue_group()

std::size_t velographx::WorkStealingPool::queue_group ( std::size_t  index) const
inlinenoexcept

Definition at line 55 of file work_stealing_pool.hpp.

◆ size()

◆ stats()

WorkStealingStats velographx::WorkStealingPool::stats ( ) const
inlinenoexcept

Definition at line 93 of file work_stealing_pool.hpp.

◆ submit()

void velographx::WorkStealingPool::submit ( Task  task,
std::size_t  locality_hint = 0 
)
inline

◆ wait_idle()

void velographx::WorkStealingPool::wait_idle ( )
inline

The documentation for this class was generated from the following file: