Ark Server API (ASE) - Wiki
Loading...
Searching...
No Matches
Poco::ThreadPool Class Reference

#include <ThreadPool.h>

+ Collaboration diagram for Poco::ThreadPool:

Public Member Functions

 ThreadPool (int minCapacity=2, int maxCapacity=16, int idleTime=60, int stackSize=POCO_THREAD_STACK_SIZE)
 
 ThreadPool (const std::string &name, int minCapacity=2, int maxCapacity=16, int idleTime=60, int stackSize=POCO_THREAD_STACK_SIZE)
 
 ~ThreadPool ()
 
void addCapacity (int n)
 
int capacity () const
 
void setStackSize (int stackSize)
 Returns the maximum capacity of threads.
 
int getStackSize () const
 
int used () const
 Returns the stack size used to create new threads.
 
int allocated () const
 Returns the number of currently used threads.
 
int available () const
 Returns the number of currently allocated threads.
 
void start (Runnable &target)
 Returns the number available threads.
 
void start (Runnable &target, const std::string &name)
 
void startWithPriority (Thread::Priority priority, Runnable &target)
 
void startWithPriority (Thread::Priority priority, Runnable &target, const std::string &name)
 
void stopAll ()
 
void joinAll ()
 
void collect ()
 
const std::string & name () const
 

Static Public Member Functions

static ThreadPooldefaultPool ()
 

Protected Member Functions

PooledThread * getThread ()
 
PooledThread * createThread ()
 
void housekeep ()
 

Private Types

typedef std::vector< PooledThread * > ThreadVec
 

Private Member Functions

 ThreadPool (const ThreadPool &pool)
 
ThreadPooloperator= (const ThreadPool &pool)
 

Private Attributes

std::string _name
 
int _minCapacity
 
int _maxCapacity
 
int _idleTime
 
int _serial
 
int _age
 
int _stackSize
 
ThreadVec _threads
 
FastMutex _mutex
 

Detailed Description

A thread pool always keeps a number of threads running, ready to accept work. Creating and starting a threads can impose a significant runtime overhead to an application. A thread pool helps to improve the performance of an application by reducing the number of threads that have to be created (and destroyed again). Threads in a thread pool are re-used once they become available again. The thread pool always keeps a minimum number of threads running. If the demand for threads increases, additional threads are created. Once the demand for threads sinks again, no-longer used threads are stopped and removed from the pool.

Definition at line 34 of file ThreadPool.h.

Member Typedef Documentation

◆ ThreadVec

typedef std::vector<PooledThread*> Poco::ThreadPool::ThreadVec
private

Definition at line 170 of file ThreadPool.h.

Constructor & Destructor Documentation

◆ ThreadPool() [1/3]

Poco::ThreadPool::ThreadPool ( int minCapacity = 2,
int maxCapacity = 16,
int idleTime = 60,
int stackSize = POCO_THREAD_STACK_SIZE )

◆ ThreadPool() [2/3]

Poco::ThreadPool::ThreadPool ( const std::string & name,
int minCapacity = 2,
int maxCapacity = 16,
int idleTime = 60,
int stackSize = POCO_THREAD_STACK_SIZE )

Creates a thread pool with minCapacity threads. If required, up to maxCapacity threads are created a NoThreadAvailableException exception is thrown. If a thread is running idle for more than idleTime seconds, and more than minCapacity threads are running, the thread is killed. Threads are created with given stack size.

◆ ~ThreadPool()

Poco::ThreadPool::~ThreadPool ( )

Creates a thread pool with the given name and minCapacity threads. If required, up to maxCapacity threads are created a NoThreadAvailableException exception is thrown. If a thread is running idle for more than idleTime seconds, and more than minCapacity threads are running, the thread is killed. Threads are created with given stack size.

◆ ThreadPool() [3/3]

Poco::ThreadPool::ThreadPool ( const ThreadPool & pool)
private

Member Function Documentation

◆ addCapacity()

void Poco::ThreadPool::addCapacity ( int n)

Currently running threads will remain active until they complete.

◆ allocated()

int Poco::ThreadPool::allocated ( ) const

Returns the number of currently used threads.

◆ available()

int Poco::ThreadPool::available ( ) const

Returns the number of currently allocated threads.

◆ capacity()

int Poco::ThreadPool::capacity ( ) const

Increases (or decreases, if n is negative) the maximum number of threads.

◆ collect()

void Poco::ThreadPool::collect ( )

Waits for all threads to complete.

Note that this will not actually join() the underlying thread, but rather wait for the thread's runnables to finish.

◆ createThread()

PooledThread * Poco::ThreadPool::createThread ( )
protected

◆ defaultPool()

static ThreadPool & Poco::ThreadPool::defaultPool ( )
static

Returns the name of the thread pool, or an empty string if no name has been specified in the constructor.

◆ getStackSize()

int Poco::ThreadPool::getStackSize ( ) const
inline

Sets the stack size for threads. New stack size applies only for newly created threads.

Definition at line 193 of file ThreadPool.h.

◆ getThread()

PooledThread * Poco::ThreadPool::getThread ( )
protected

Returns a reference to the default thread pool.

◆ housekeep()

void Poco::ThreadPool::housekeep ( )
protected

◆ joinAll()

void Poco::ThreadPool::joinAll ( )

Stops all running threads and waits for their completion.

Will also delete all thread objects. If used, this method should be the last action before the thread pool is deleted.

Note: If a thread fails to stop within 10 seconds (due to a programming error, for example), the underlying thread object will not be deleted and this method will return anyway. This allows for a more or less graceful shutdown in case of a misbehaving thread.

◆ name()

const std::string & Poco::ThreadPool::name ( ) const
inline

Stops and removes no longer used threads from the thread pool. Can be called at various times in an application's life time to help the thread pool manage its threads. Calling this method is optional, as the thread pool is also implicitly managed in calls to start(), addCapacity() and joinAll().

Definition at line 199 of file ThreadPool.h.

◆ operator=()

ThreadPool & Poco::ThreadPool::operator= ( const ThreadPool & pool)
private

◆ setStackSize()

void Poco::ThreadPool::setStackSize ( int stackSize)
inline

Returns the maximum capacity of threads.

Definition at line 187 of file ThreadPool.h.

◆ start() [1/2]

void Poco::ThreadPool::start ( Runnable & target)

Returns the number available threads.

◆ start() [2/2]

void Poco::ThreadPool::start ( Runnable & target,
const std::string & name )

Obtains a thread and starts the target. Throws a NoThreadAvailableException if no more threads are available.

◆ startWithPriority() [1/2]

void Poco::ThreadPool::startWithPriority ( Thread::Priority priority,
Runnable & target )

Obtains a thread and starts the target. Assigns the given name to the thread. Throws a NoThreadAvailableException if no more threads are available.

◆ startWithPriority() [2/2]

void Poco::ThreadPool::startWithPriority ( Thread::Priority priority,
Runnable & target,
const std::string & name )

Obtains a thread, adjusts the thread's priority, and starts the target. Throws a NoThreadAvailableException if no more threads are available.

◆ stopAll()

void Poco::ThreadPool::stopAll ( )

Obtains a thread, adjusts the thread's priority, and starts the target. Assigns the given name to the thread. Throws a NoThreadAvailableException if no more threads are available.

◆ used()

int Poco::ThreadPool::used ( ) const

Returns the stack size used to create new threads.

Member Data Documentation

◆ _age

int Poco::ThreadPool::_age
private

Definition at line 177 of file ThreadPool.h.

◆ _idleTime

int Poco::ThreadPool::_idleTime
private

Definition at line 175 of file ThreadPool.h.

◆ _maxCapacity

int Poco::ThreadPool::_maxCapacity
private

Definition at line 174 of file ThreadPool.h.

◆ _minCapacity

int Poco::ThreadPool::_minCapacity
private

Definition at line 173 of file ThreadPool.h.

◆ _mutex

FastMutex Poco::ThreadPool::_mutex
mutableprivate

Definition at line 180 of file ThreadPool.h.

◆ _name

std::string Poco::ThreadPool::_name
private

Definition at line 172 of file ThreadPool.h.

◆ _serial

int Poco::ThreadPool::_serial
private

Definition at line 176 of file ThreadPool.h.

◆ _stackSize

int Poco::ThreadPool::_stackSize
private

Definition at line 178 of file ThreadPool.h.

◆ _threads

ThreadVec Poco::ThreadPool::_threads
private

Definition at line 179 of file ThreadPool.h.


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