Pool¶
class Pool
Pool tasks scheduler class.
The Pool tasks scheduler can pick and run pool tasks on several multiple threads. The number of threads is defined at initialization.
The maximum number of tasks the pool can manage is defined by the AM_MAX_THREAD_POOL_TASKS macro. The default value is 1024
Functions¶
| Name | Description |
|---|---|
| Pool | Creates a new pool tasks scheduler instance. |
| ~Pool | Destructor. |
| Init | Initializes and run thread pool. |
| AddTask | Add a task to the tasks list. |
| GetWork | Called from worker thread to get a new task. |
| GetThreadCount | Gets the number of threads this pool is using. |
| IsRunning | Indicates that the pool is running. |
| HasTasks | Indicates that has tasks pending. |
| GetTaskCount | Gets the number of tasks in the pool. |
Function Details¶
AddTask¶
void AddTask(std::shared_ptr<PoolTask> task)
Add a task to the tasks list.
- Parameter
task - The
PoolTaskto add. The task is not automatically deleted when the work is done.
GetTaskCount¶
[[nodiscard]] AmInt32 GetTaskCount() const
Gets the number of tasks in the pool.
- Return
- The number of tasks in the pool.
GetThreadCount¶
[[nodiscard]] AmUInt32 GetThreadCount() const
Gets the number of threads this pool is using.
- Return
- The total number of threads in the pool.
GetWork¶
std::shared_ptr<PoolTask> GetWork()
Called from worker thread to get a new task.
Warning
This method is called internally, and should not be called in user code.
- Return
- The next
PoolTaskto execute, ornullptrif no task is available.
HasTasks¶
[[nodiscard]] bool HasTasks() const
Indicates that has tasks pending.
- Return
trueif there are tasks pending,falseotherwise.
Init¶
void Init(AmUInt32 threadCount)
Initializes and run thread pool.
- Parameter
threadCount - The number of threads in the pool. For thread count 0, work is done at
AddTask()call in the calling thread.
IsRunning¶
[[nodiscard]] bool IsRunning() const
Indicates that the pool is running.
- Return
trueif the pool is running,falseotherwise.
Pool¶
Pool()
Creates a new pool tasks scheduler instance.
~Pool¶
~Pool()
Destructor.
It waits for the threads to finish. Work may be unfinished.