template<typename Task = task_func, template< typename > class SchedulingPolicy = fifo_scheduler, template< typename > class SizePolicy = static_size, template< typename > class SizePolicyController = resize_controller, template< typename > class ShutdownPolicy = wait_for_all_tasks>
class boost::threadpool::thread_pool< Task, SchedulingPolicy, SizePolicy, SizePolicyController, ShutdownPolicy >
Thread pool.
Thread pools are a mechanism for asynchronous and parallel processing within the same process. The pool class provides a convenient way for dispatching asynchronous tasks as functions objects. The scheduling of these tasks can be easily controlled by using customized schedulers. A task must not throw an exception.
A pool is DefaultConstructible, CopyConstructible and Assignable. It has reference semantics; all copies of the same pool are equivalent and interchangeable. All operations on a pool except assignment are strongly thread safe or sequentially consistent; that is, the behavior of concurrent calls is as if the calls have been issued sequentially in an unspecified order.
- Parameters:
-
Task | A function object which implements the operator 'void operator() (void) const'. The operator () is called by the pool to execute the task. Exceptions are ignored. |
SchedulingPolicy | A task container which determines how tasks are scheduled. It is guaranteed that this container is accessed only by one thread at a time. The scheduler shall not throw exceptions. |
- See also:
- Tasks: task_func, prio_task_func
-
Scheduling policies: fifo_scheduler, lifo_scheduler, prio_scheduler
Definition at line 73 of file pool.hpp.
template<typename Task = task_func, template< typename > class SchedulingPolicy = fifo_scheduler, template< typename > class SizePolicy = static_size, template< typename > class SizePolicyController = resize_controller, template< typename > class ShutdownPolicy = wait_for_all_tasks>
Indicates the scheduler's type.
Definition at line 85 of file pool.hpp.
template<typename Task = task_func, template< typename > class SchedulingPolicy = fifo_scheduler, template< typename > class SizePolicy = static_size, template< typename > class SizePolicyController = resize_controller, template< typename > class ShutdownPolicy = wait_for_all_tasks>
Indicates the task's type.
Definition at line 84 of file pool.hpp.
template<typename Task = task_func, template< typename > class SchedulingPolicy = fifo_scheduler, template< typename > class SizePolicy = static_size, template< typename > class SizePolicyController = resize_controller, template< typename > class ShutdownPolicy = wait_for_all_tasks>
Returns the number of tasks which are currently executed.
- Returns:
- The number of active tasks.
Definition at line 139 of file pool.hpp.
template<typename Task = task_func, template< typename > class SchedulingPolicy = fifo_scheduler, template< typename > class SizePolicy = static_size, template< typename > class SizePolicyController = resize_controller, template< typename > class ShutdownPolicy = wait_for_all_tasks>
Removes all pending tasks from the pool's scheduler.
Definition at line 156 of file pool.hpp.
template<typename Task = task_func, template< typename > class SchedulingPolicy = fifo_scheduler, template< typename > class SizePolicy = static_size, template< typename > class SizePolicyController = resize_controller, template< typename > class ShutdownPolicy = wait_for_all_tasks>
Indicates that there are no tasks pending.
- Returns:
- true if there are no tasks ready for execution.
Definition at line 166 of file pool.hpp.
template<typename Task = task_func, template< typename > class SchedulingPolicy = fifo_scheduler, template< typename > class SizePolicy = static_size, template< typename > class SizePolicyController = resize_controller, template< typename > class ShutdownPolicy = wait_for_all_tasks>
Returns the number of tasks which are ready for execution.
- Returns:
- The number of pending tasks.
Definition at line 148 of file pool.hpp.
template<typename Task = task_func, template< typename > class SchedulingPolicy = fifo_scheduler, template< typename > class SizePolicy = static_size, template< typename > class SizePolicyController = resize_controller, template< typename > class ShutdownPolicy = wait_for_all_tasks>
Schedules a task for asynchronous execution. The task will be executed once only.
- Parameters:
-
task | The task function object. It should not throw execeptions. |
- Returns:
- true, if the task could be scheduled and false otherwise.
Definition at line 130 of file pool.hpp.
template<typename Task = task_func, template< typename > class SchedulingPolicy = fifo_scheduler, template< typename > class SizePolicy = static_size, template< typename > class SizePolicyController = resize_controller, template< typename > class ShutdownPolicy = wait_for_all_tasks>
Gets the number of threads in the pool.
- Returns:
- The number of threads.
Definition at line 120 of file pool.hpp.
template<typename Task = task_func, template< typename > class SchedulingPolicy = fifo_scheduler, template< typename > class SizePolicy = static_size, template< typename > class SizePolicyController = resize_controller, template< typename > class ShutdownPolicy = wait_for_all_tasks>
Gets the size controller which manages the number of threads in the pool.
- Returns:
- The size controller.
- See also:
- SizePolicy
Definition at line 111 of file pool.hpp.
template<typename Task = task_func, template< typename > class SchedulingPolicy = fifo_scheduler, template< typename > class SizePolicy = static_size, template< typename > class SizePolicyController = resize_controller, template< typename > class ShutdownPolicy = wait_for_all_tasks>
The current thread of execution is blocked until the sum of all active and pending tasks is equal or less than a given threshold.
- Parameters:
-
task_threshold | The maximum number of tasks in pool and scheduler. |
Definition at line 176 of file pool.hpp.
template<typename Task = task_func, template< typename > class SchedulingPolicy = fifo_scheduler, template< typename > class SizePolicy = static_size, template< typename > class SizePolicyController = resize_controller, template< typename > class ShutdownPolicy = wait_for_all_tasks>
bool boost::threadpool::thread_pool< Task, SchedulingPolicy, SizePolicy, SizePolicyController, ShutdownPolicy >::wait |
( |
xtime const & |
timestamp, |
|
|
size_t |
task_threshold = 0 |
|
) |
| const [inline] |
The current thread of execution is blocked until the timestamp is met or the sum of all active and pending tasks is equal or less than a given threshold.
- Parameters:
-
timestamp | The time when function returns at the latest. |
task_threshold | The maximum number of tasks in pool and scheduler. |
- Returns:
- true if the task sum is equal or less than the threshold, false otherwise.
Definition at line 189 of file pool.hpp.