libutil++  1.9.3
 All Classes Functions Variables
Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | Protected Attributes | List of all members
sella::util::ThreadPool Class Reference
Inheritance diagram for sella::util::ThreadPool:
sella::util::TaskQueue

Public Types

typedef std::shared_ptr
< ThreadPool
shared
 

Public Member Functions

 ThreadPool (size_t maximumWorkers=DefaultMaximumWorkers) throw (ThreadPoolException)
 
 ThreadPool (size_t maximumWorkers, size_t minimumWorkers, size_t spareWorkers=DefaultSpareWorkers) throw (ThreadPoolException)
 
 ThreadPool (Log::shared log, size_t maximumWorkers=DefaultMaximumWorkers) throw (ThreadPoolException)
 
 ThreadPool (Log::shared log, size_t maximumWorkers, size_t minimumWorkers, size_t spareWorkers=DefaultSpareWorkers) throw (ThreadPoolException)
 
 ThreadPool (const ThreadPool &other)=delete
 
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) throw (ThreadPoolException)
 
static ThreadPool::shared shared_ptr (size_t maximumWorkers, size_t minimumWorkers, size_t spareWorkers=DefaultSpareWorkers) throw (ThreadPoolException)
 
static ThreadPool::shared shared_ptr (Log::shared log, size_t maximumWorkers=DefaultMaximumWorkers) throw (ThreadPoolException)
 
static ThreadPool::shared shared_ptr (Log::shared log, size_t maximumWorkers, size_t minimumWorkers, size_t spareWorkers=DefaultSpareWorkers) throw (ThreadPoolException)
 

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 Member Functions inherited from sella::util::TaskQueue
 TaskQueue (const size_t capacity=DefaultMinimumCapacity)
 
 TaskQueue (Log::shared log, const size_t capacity=DefaultMinimumCapacity)
 
 TaskQueue (const TaskQueue &other)=delete
 
TaskQueueoperator= (const TaskQueue &other)=delete
 
size_t size (void) const
 
bool empty (void) const
 
void clear (void)
 
Task::shared top (void) const
 
Task::shared next (void) const
 
const timeval getDelay (timeval fallback=FallbackTimeval) const
 
uint64_t getDelayMsec (uint64_t fallback=FallbackMsecDelay, uint64_t maximum=0) const
 
uint64_t getDelayUsec (uint64_t fallback=FallbackUsecDelay, uint64_t maximum=0) const
 
void push (Task::shared &task)
 
void push (Task::shared &task, const std::chrono::system_clock::duration &delay, int priority=0)
 
void push (Task::shared &task, const std::chrono::system_clock::time_point &time, int priority=0)
 
void push (Task::shared &task, time_t sec, suseconds_t usec=0, int priority=0)
 
void push (Task::shared &task, timeval &tv, int priority=0)
 
bool repush (Task::shared &task, const std::chrono::system_clock::duration &delay, int priority=0, bool strict=false)
 
bool repush (Task::shared &task, const std::chrono::system_clock::time_point &time, int priority=0, bool strict=false)
 
bool repush (Task::shared &task, time_t sec, suseconds_t usec=0, int priority=0, bool strict=false)
 
bool repush (Task::shared &task, timeval &tv, int priority=0, bool strict=false)
 
void pop (void)
 
bool erase (Task::shared &task, bool firstonly=true)
 
bool erase (void *object)
 
size_t capacity (void) const
 
void reserve (size_t capacity)
 
void print (void) const
 
void setLog (Log::shared log)
 
bool isReady (void) const
 

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
 
- Protected Attributes inherited from sella::util::TaskQueue
Log::shared libutilxx__log
 
std::vector< Task::shared > heap
 

Additional Inherited Members

- Protected Types inherited from sella::util::TaskQueue
typedef std::shared_ptr
< TaskQueue
shared
 
- Static Protected Attributes inherited from sella::util::TaskQueue
static const size_t DefaultMinimumCapacity = 16
 
static const uint64_t FallbackMsecDelay = 200
 
static const uint64_t FallbackUsecDelay = 200000
 

Detailed Description

Definition at line 37 of file ThreadPool.h.


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