#include <TaskPool.h>
Definition at line 60 of file TaskPool.h.
◆ QueueType
◆ TaskPool()
Divide::TaskPool::TaskPool |
( |
std::string_view |
workerName | ) |
|
|
explicit |
◆ ~TaskPool()
Divide::TaskPool::~TaskPool |
( |
| ) |
|
◆ addTask()
bool Divide::TaskPool::addTask |
( |
PoolTask && |
job | ) |
|
◆ AllocateTask()
Task * Divide::TaskPool::AllocateTask |
( |
Task * |
parentTask, |
|
|
DELEGATE< void, Task & > && |
func, |
|
|
bool |
allowedInIdle |
|
) |
| |
|
staticnoexcept |
◆ deque()
bool Divide::TaskPool::deque |
( |
bool |
isIdleCall, |
|
|
PoolTask & |
taskOut |
|
) |
| |
|
private |
◆ enqueue()
◆ executeOneTask()
void Divide::TaskPool::executeOneTask |
( |
bool |
isIdleCall | ) |
|
◆ flushCallbackQueue()
size_t Divide::TaskPool::flushCallbackQueue |
( |
| ) |
|
Returns the number of callbacks processed.
Definition at line 201 of file TaskPool.cpp.
◆ init() [1/2]
void Divide::TaskPool::init |
( |
| ) |
|
◆ init() [2/2]
bool Divide::TaskPool::init |
( |
size_t |
threadCount, |
|
|
const DELEGATE< void, const std::thread::id & > & |
onThreadCreate = {} |
|
) |
| |
◆ join()
void Divide::TaskPool::join |
( |
| ) |
|
◆ PROPERTY_R()
Divide::TaskPool::PROPERTY_R |
( |
vector< std::thread > |
, |
|
|
threads |
|
|
) |
| |
◆ runRealTime()
bool Divide::TaskPool::runRealTime |
( |
Task & |
task, |
|
|
const DELEGATE< void > & |
onCompletionFunction |
|
) |
| |
|
private |
◆ shutdown()
void Divide::TaskPool::shutdown |
( |
| ) |
|
◆ taskCompleted()
void Divide::TaskPool::taskCompleted |
( |
Task & |
task | ) |
|
|
private |
<Needed to cleanup any stale resources (e.g. captured by lambdas)
Definition at line 271 of file TaskPool.cpp.
◆ taskStarted()
void Divide::TaskPool::taskStarted |
( |
Task & |
task | ) |
|
|
private |
◆ threadWaiting()
void Divide::TaskPool::threadWaiting |
( |
| ) |
|
Called by a task that isn't doing anything (e.g. waiting on child tasks). Use this to run another task (if any) and return to the previous execution point
Definition at line 341 of file TaskPool.cpp.
◆ wait()
void Divide::TaskPool::wait |
( |
| ) |
const |
|
noexcept |
◆ waitForAllTasks()
void Divide::TaskPool::waitForAllTasks |
( |
bool |
flushCallbacks | ) |
|
◆ waitForTask()
void Divide::TaskPool::waitForTask |
( |
const Task & |
task | ) |
|
|
private |
◆ Parallel_For
◆ Start
◆ Task
◆ Wait
◆ _activeThreads
std::atomic_size_t Divide::TaskPool::_activeThreads { 0u } |
|
private |
◆ _isRunning
bool Divide::TaskPool::_isRunning { true } |
|
private |
◆ _queue
◆ _runningTaskCount
std::atomic_uint Divide::TaskPool::_runningTaskCount = 0u |
|
private |
◆ _taskCallbacks
eastl::fixed_vector<CallbackEntry, 1 << 9, true> Divide::TaskPool::_taskCallbacks |
|
private |
◆ _taskCallbacksLock
◆ _taskFinishedCV
std::condition_variable Divide::TaskPool::_taskFinishedCV |
|
private |
◆ _taskFinishedMutex
Mutex Divide::TaskPool::_taskFinishedMutex |
|
private |
◆ _threadCreateCbk
DELEGATE<void, const std::thread::id&> Divide::TaskPool::_threadCreateCbk {} |
|
private |
◆ _threadedCallbackBuffer
moodycamel::ConcurrentQueue<U32> Divide::TaskPool::_threadedCallbackBuffer {} |
|
private |
◆ _threadNamePrefix
const string Divide::TaskPool::_threadNamePrefix |
|
private |
◆ IsBlocking
constexpr bool Divide::TaskPool::IsBlocking = true |
|
staticconstexpr |
The documentation for this class was generated from the following files: