Grok  9.5.0
Public Member Functions | Static Public Member Functions | Private Attributes | Static Private Attributes | List of all members
ThreadPool Class Reference

#include <ThreadPool.hpp>

Public Member Functions

 ThreadPool (size_t)
 
template<class F , class... Args>
auto enqueue (F &&f, Args &&... args) -> std::future< typename std::invoke_result< F, Args... >::type >
 
 ~ThreadPool ()
 
int thread_number (std::thread::id id)
 
size_t num_threads ()
 

Static Public Member Functions

static ThreadPoolget ()
 
static ThreadPoolinstance (uint32_t numthreads)
 
static void release ()
 
static uint32_t hardware_concurrency ()
 

Private Attributes

std::vector< std::thread > workers
 
std::queue< std::function< void()> > tasks
 
std::mutex queue_mutex
 
std::condition_variable condition
 
bool stop
 
std::map< std::thread::id, size_t > id_map
 
size_t m_num_threads
 

Static Private Attributes

static ThreadPoolsingleton = nullptr
 
static std::mutex singleton_mutex
 

Constructor & Destructor Documentation

◆ ThreadPool()

ThreadPool::ThreadPool ( size_t  threads)
inline

References workers.

Referenced by instance().

◆ ~ThreadPool()

ThreadPool::~ThreadPool ( )
inline

References condition, queue_mutex, stop, and workers.

Member Function Documentation

◆ enqueue()

template<class F , class... Args>
auto ThreadPool::enqueue ( F &&  f,
Args &&...  args 
) -> std::future<typename std::invoke_result<F, Args...>::type>

◆ get()

static ThreadPool* ThreadPool::get ( )
inlinestatic

◆ hardware_concurrency()

static uint32_t ThreadPool::hardware_concurrency ( )
inlinestatic

◆ instance()

static ThreadPool* ThreadPool::instance ( uint32_t  numthreads)
inlinestatic

◆ num_threads()

size_t ThreadPool::num_threads ( )
inline

◆ release()

static void ThreadPool::release ( void  )
inlinestatic

References singleton, and singleton_mutex.

Referenced by grk_deinitialize().

◆ thread_number()

int ThreadPool::thread_number ( std::thread::id  id)
inline

Member Data Documentation

◆ condition

std::condition_variable ThreadPool::condition
private

Referenced by ~ThreadPool().

◆ id_map

std::map<std::thread::id, size_t> ThreadPool::id_map
private

Referenced by thread_number().

◆ m_num_threads

size_t ThreadPool::m_num_threads
private

Referenced by num_threads().

◆ queue_mutex

std::mutex ThreadPool::queue_mutex
private

Referenced by ~ThreadPool().

◆ singleton

ThreadPool * ThreadPool::singleton = nullptr
staticprivate

Referenced by instance(), and release().

◆ singleton_mutex

std::mutex ThreadPool::singleton_mutex
staticprivate

Referenced by instance(), and release().

◆ stop

bool ThreadPool::stop
private

Referenced by ~ThreadPool().

◆ tasks

std::queue<std::function<void()> > ThreadPool::tasks
private

◆ workers

std::vector<std::thread> ThreadPool::workers
private

Referenced by ThreadPool(), and ~ThreadPool().


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