Library: Foundation
Package: Threading
Header: Poco/ActiveThreadPool.h
Description
A thread pool manages and recycles individual Poco::Thread objects to help reduce thread creation costs in programs that use threads.
The thread pool supports a task queue. When there are no idle threads, tasks are placed in the task queue to wait for execution. Use case for this pool is running many (more than os-max-thread-count) short live tasks
Member Summary
Member Functions: capacity, defaultPool, expiryTimeout, getStackSize, joinAll, name, setExpiryTimeout, start
Constructors
ActiveThreadPool
ActiveThreadPool(
int capacity = static_cast < int > (Environment::processorCount ())+ 1,
int stackSize = 0
);
Creates a thread pool with a maximum thread count of capacity. Threads are created with given stack size.
ActiveThreadPool
ActiveThreadPool(
const std::string & name,
int capacity = static_cast < int > (Environment::processorCount ())+ 1,
int stackSize = 0
);
Creates a thread pool with the given name and a maximum thread count of capacity. Threads are created with given stack size.
Destructor
~ActiveThreadPool
~ActiveThreadPool();
Currently running threads will remain active until they complete.
Member Functions
capacity
int capacity() const;
Returns the capacity of threads.
defaultPool
static ActiveThreadPool & defaultPool();
Returns a reference to the default thread pool.
expiryTimeout
int expiryTimeout() const;
Returns the thread expiry timeout value in milliseconds. The default expiryTimeout is 30000 milliseconds (30 seconds).
getStackSize
int getStackSize() const;
Returns the stack size used to create new threads.
joinAll
void joinAll();
Waits for all threads to exit and removes all threads from the thread pool.
name
const std::string & name() const;
Returns the name of the thread pool, or an empty string if no name has been specified in the constructor.
setExpiryTimeout
void setExpiryTimeout(
int expiryTimeout
);
Set the thread expiry timeout value in milliseconds. The default expiryTimeout is 30000 milliseconds (30 seconds).
start
void start(
Runnable & target,
int priority = 0
);
Obtains a thread and starts the target.