sella::util::ThreadPool Class Reference

Inheritance diagram for sella::util::ThreadPool:
sella::util::TaskQueue

List of all members.

Public Types

typedef std::shared_ptr
< ThreadPool
shared

Public Member Functions

 ThreadPool (size_t maximumWorkers=DefaultMaximumWorkers)
 ThreadPool (size_t maximumWorkers, size_t minimumWorkers, size_t spareWorkers=DefaultSpareWorkers)
 ThreadPool (Log::shared log, size_t maximumWorkers=DefaultMaximumWorkers)
 ThreadPool (Log::shared log, size_t maximumWorkers, size_t minimumWorkers, size_t spareWorkers=DefaultSpareWorkers)
 ThreadPool (const ThreadPool &other)
void schedule (Task::shared &task, int priority=0)
void schedule (Task::shared &task, const std::chrono::system_clock::duration &delay, int priority=0)
void schedule (Task::shared &task, const std::chrono::system_clock::time_point &time, int priority=0)
void schedule (Task::shared &task, time_t sec, suseconds_t usec, int priority=0)
void schedule (Task::shared &task, timeval &tv, int priority=0)
bool reschedule (Task::shared &task, const std::chrono::system_clock::duration &delay, int priority=0, bool strict=false)
bool reschedule (Task::shared &task, const std::chrono::system_clock::time_point &time, int priority=0, bool strict=false)
bool reschedule (Task::shared &task, time_t sec, suseconds_t usec=0, int priority=0, bool strict=false)
bool reschedule (Task::shared &task, timeval &tv, int priority=0, bool strict=false)
bool unschedule (Task::shared &task, bool firstonly=true)
void pause (bool on=true)
void resume (void)
size_t getCPUCount (void)
int getCPUSetCount (void)
bool addCPUAffinity (int cpu)
bool addCPUAffinity (std::set< int > cpus)
bool setCPUAffinity (cpu_set_t &cpuset)
bool clearCPUAffinity (void)
bool clearCPUAffinity (int cpu)
bool clearCPUAffinity (std::set< int > cpus)
size_t size (void) const
size_t workers (void) const
size_t active (void) const
bool empty (void) const
void clear (void)
Task::shared next (void)
std::chrono::microseconds duration (void) const
std::chrono::microseconds max (void) const
bool ready (void) const
bool wait (void)
bool wait (const std::chrono::system_clock::duration &delay)
bool wait (const std::chrono::system_clock::time_point &time)
void reserve (size_t capacity)
void print (void) const

Static Public Member Functions

static ThreadPool::shared shared_ptr (size_t maximumWorkers=DefaultMaximumWorkers)
static ThreadPool::shared shared_ptr (size_t maximumWorkers, size_t minimumWorkers, size_t spareWorkers=DefaultSpareWorkers)
static ThreadPool::shared shared_ptr (Log::shared log, size_t maximumWorkers=DefaultMaximumWorkers)
static ThreadPool::shared shared_ptr (Log::shared log, size_t maximumWorkers, size_t minimumWorkers, size_t spareWorkers=DefaultSpareWorkers)

Static Public Attributes

static const size_t DefaultMaximumWorkers = 0
static const size_t DefaultMinimumWorkers = 2
static const size_t DefaultSpareWorkers = 2

Protected Member Functions

void manager (void)
void worker (void)
void normalize (void)
void createWorker (void)
bool setThreadsAffinity (void)
bool setThreadAffinity (pthread_t tid)

Protected Attributes

std::thread managerTID
std::set< pthread_t > tids
std::atomic< size_t > threads
std::atomic< size_t > creating
std::atomic< size_t > actives
std::atomic< size_t > overage
bool shutdown
bool paused
bool allcpus
cpu_set_t cpuset
std::mutex heapMutex
std::mutex tidsMutex
std::mutex managerMutex
std::mutex workerMutex
std::mutex overageMutex
std::mutex emptyMutex
std::condition_variable managerCV
std::condition_variable workerCV
std::condition_variable emptyCV
size_t maximum
size_t minimum
size_t spares

Detailed Description

Definition at line 31 of file ThreadPool.h.


The documentation for this class was generated from the following files:
 All Classes Functions Variables

Generated on 20 Nov 2014 for libutil++ by  doxygen 1.6.1