|
AGX Dynamics 2.42.3.1
|
An abstract job/workblock representation, which allows work threads to execute arbitrary tasks. More...
#include <Job.h>
Inheritance diagram for agx::Job:Public Member Functions | |
| Job () | |
| Job (const Callback &callback, agx::UInt32 costEstimate=100) | |
| Job (const Job &other) | |
| virtual | ~Job () |
| void | addDependency (Job *parent) |
| Add a dependency to a job. | |
| void | clearChildDependencies () |
| Remove all child dependencies. | |
| void | decrementNumDependencies (agx::UInt32 size=1) |
| Explicitly decrement the number of parent dependencies. | |
| Thread * | getAssignedThread () |
| const Callback & | getCallback () const |
| Return the current callback. | |
| const JobPtrVector & | getChildDependencies () const |
| agx::UInt32 | getCostEstimate () const |
| Real | getExecutionTime () const |
| const char * | getName () const |
| agx::UInt32 | getNumDependencies () const |
| const JobPtrVector & | getParentDependencies () const |
| SyncTag * | getSyncTag () |
| agx::UInt32 | getTag () const |
| Thread * | getTargetThread () |
| Task * | getTask () |
| const Timer & | getTimer () const |
| bool | hasDependency (Job *parent) |
| virtual void | implementation () |
| Job implementation, override in subclass. | |
| void | incrementNumDependencies (agx::UInt32 size=1) |
| Explicitly increment the number of parent dependencies. | |
| agx::Index & | index () |
| const agx::Index & | index () const |
| void | init (const Callback &callback=Callback(), agx::UInt32 costEstimate=100) |
| Initialize the job. | |
| Job & | operator= (const Job &other) |
| void | removeAllDependencies () |
| Remove all parent dependencies. | |
| void | removeDependency (Job *parent) |
| Remove a dependency from a job. | |
| bool | resolve () |
| Increase the dependency counter for the job, and queue job for execution if all dependencies are resolved. | |
| void | setCallback (const Callback &callback) |
| Set the callback which is called when execute() runs. | |
| void | setCostEstimate (agx::UInt32 cost) |
| Specify the cost estimate for this job. | |
| void | setName (const char *name) |
| Set the name of the job, for debugging. | |
| void | setNumDependencies (agx::UInt32 numDependencies) |
| Explicitly set the number of parent dependencies. | |
| void | setSyncTag (SyncTag *tag) |
| Set the synchronization tag which must enter completion status before the job is executed. | |
| void | setTag (agx::UInt32 tag) |
| Set the job tag, can be used to keep track of different job classes etc. | |
| void | setTargetThread (Thread *thread) |
| Set the target thread which the job will be executed on. | |
| void | setTask (Task *task) |
| Set the task which the job belongs to. | |
| void | spawn () |
| Schedule job for execution in thread pool. | |
Public Member Functions inherited from agx::Callback | |
| Callback () | |
| Callback (const CallbackFunction &func, bool repeatEnable=true) | |
| template<class ClassT > | |
| Callback (void(ClassT::*fun)(), ClassT *obj, bool repeatEnable=true) | |
| const CallbackFunction & | implementation () const |
| Return the std representation. | |
| bool | isRepeating () const |
| bool | isValid () const |
| operator bool () const | |
| operator const CallbackFunction & () const | |
| void | operator() () const |
| Execute the callback. | |
| void | run () const |
Protected Attributes | |
| Thread * | m_assignedThread |
| Callback | m_callback |
| JobPtrVector | m_children |
| agx::UInt32 | m_cost |
| std::atomic< Int32 > | m_dependencyCounter |
| agx::Index | m_index |
| const char * | m_name |
| agx::UInt32 | m_numDependencies |
| JobPtrVector | m_parents |
| SyncTagRef | m_syncTag |
| agx::UInt32 | m_tag |
| Thread * | m_targetThread |
| Task * | m_task |
| Timer | m_timer |
Additional Inherited Members | |
Public Types inherited from agx::Callback | |
| typedef std::function< void()> | CallbackFunction |
An abstract job/workblock representation, which allows work threads to execute arbitrary tasks.
The jobs have specified dependecies which enables them to be organized in an execution graph.
| agx::Job::Job | ( | const Callback & | callback, |
| agx::UInt32 | costEstimate = 100 |
||
| ) |
|
virtual |
References agx::init().
| void agx::Job::addDependency | ( | Job * | parent | ) |
Add a dependency to a job.
| parent | The parent dependency |
Definition at line 503 of file Job.h.
References agxAssert, m_children, m_numDependencies, m_parents, and agx::VectorPOD< T, Allocator >::push_back().
| void agx::Job::clearChildDependencies | ( | ) |
Remove all child dependencies.
NOTE: Parent dependencies in children are not updated
Definition at line 536 of file Job.h.
References agx::VectorPOD< T, Allocator >::clear(), and m_children.
| void agx::Job::decrementNumDependencies | ( | agx::UInt32 | size = 1 | ) |
Explicitly decrement the number of parent dependencies.
Definition at line 548 of file Job.h.
References m_numDependencies.
| Thread * agx::Job::getAssignedThread | ( | ) |
Definition at line 497 of file Job.h.
References m_assignedThread.
| const Job::Callback & agx::Job::getCallback | ( | ) | const |
| const JobPtrVector & agx::Job::getChildDependencies | ( | ) | const |
| agx::UInt32 agx::Job::getCostEstimate | ( | ) | const |
Definition at line 575 of file Job.h.
References m_cost.
Referenced by agx::JobGroup::addJob().
| Real agx::Job::getExecutionTime | ( | ) | const |
Definition at line 573 of file Job.h.
References agx::Timer::getTime(), and m_timer.
| const char * agx::Job::getName | ( | ) | const |
| agx::UInt32 agx::Job::getNumDependencies | ( | ) | const |
Definition at line 546 of file Job.h.
References m_numDependencies.
| const JobPtrVector & agx::Job::getParentDependencies | ( | ) | const |
| SyncTag * agx::Job::getSyncTag | ( | ) |
| agx::UInt32 agx::Job::getTag | ( | ) | const |
| Thread * agx::Job::getTargetThread | ( | ) |
Definition at line 491 of file Job.h.
References m_targetThread.
| Task * agx::Job::getTask | ( | ) |
| const Timer & agx::Job::getTimer | ( | ) | const |
| bool agx::Job::hasDependency | ( | Job * | parent | ) |
| parent | - The parent job to check |
Definition at line 528 of file Job.h.
References agxAssert, agx::VectorPOD< T, Allocator >::contains(), and m_children.
|
virtual |
Job implementation, override in subclass.
Default implementation use a generic callback.
Reimplemented in agx::RangeJob, agx::RangeJobT< T >, and agx::JobGroup.
| void agx::Job::incrementNumDependencies | ( | agx::UInt32 | size = 1 | ) |
Explicitly increment the number of parent dependencies.
Definition at line 547 of file Job.h.
References m_numDependencies.
| agx::Index & agx::Job::index | ( | ) |
| const agx::Index & agx::Job::index | ( | ) | const |
| void agx::Job::init | ( | const Callback & | callback = Callback(), |
| agx::UInt32 | costEstimate = 100 |
||
| ) |
Initialize the job.
Definition at line 556 of file Job.h.
References agx::VectorPOD< T, Allocator >::clear(), m_assignedThread, m_callback, m_children, m_cost, m_index, m_parents, m_tag, m_targetThread, and setNumDependencies().
Referenced by agx::JobGroup::init(), agx::RangeJob::init(), and agx::TaskJob::init().
Definition at line 468 of file Job.h.
References m_assignedThread, m_callback, m_children, m_cost, m_dependencyCounter, m_index, m_name, m_numDependencies, m_parents, m_syncTag, m_tag, m_targetThread, m_task, and m_timer.
| void agx::Job::removeAllDependencies | ( | ) |
Remove all parent dependencies.
NOTE: Child dependencies in parents are not updated
Definition at line 538 of file Job.h.
References agx::VectorPOD< T, Allocator >::clear(), m_numDependencies, and m_parents.
| void agx::Job::removeDependency | ( | Job * | parent | ) |
Remove a dependency from a job.
| parent | The parent dependency |
Definition at line 515 of file Job.h.
References agxAssert, agxVerify, agx::VectorPOD< T, Allocator >::findAndErase(), m_children, m_numDependencies, and m_parents.
| bool agx::Job::resolve | ( | ) |
Increase the dependency counter for the job, and queue job for execution if all dependencies are resolved.
Automatically called as parent dependencies are completed.
| void agx::Job::setCallback | ( | const Callback & | callback | ) |
Set the callback which is called when execute() runs.
Definition at line 552 of file Job.h.
References m_callback.
| void agx::Job::setCostEstimate | ( | agx::UInt32 | cost | ) |
| void agx::Job::setName | ( | const char * | name | ) |
| void agx::Job::setNumDependencies | ( | agx::UInt32 | numDependencies | ) |
Explicitly set the number of parent dependencies.
NOTE: Only use if you know what you are doing....
Definition at line 537 of file Job.h.
References m_numDependencies.
Referenced by init().
| void agx::Job::setSyncTag | ( | SyncTag * | tag | ) |
| void agx::Job::setTag | ( | agx::UInt32 | tag | ) |
| void agx::Job::setTargetThread | ( | Thread * | thread | ) |
Set the target thread which the job will be executed on.
Definition at line 492 of file Job.h.
References m_targetThread.
| void agx::Job::setTask | ( | Task * | task | ) |
| void agx::Job::spawn | ( | ) |
Schedule job for execution in thread pool.
|
protected |
Definition at line 266 of file Job.h.
Referenced by getAssignedThread(), init(), and operator=().
|
protected |
Definition at line 260 of file Job.h.
Referenced by getCallback(), init(), operator=(), and setCallback().
|
protected |
Definition at line 258 of file Job.h.
Referenced by addDependency(), clearChildDependencies(), getChildDependencies(), hasDependency(), init(), operator=(), and removeDependency().
|
protected |
Definition at line 268 of file Job.h.
Referenced by agx::JobGroup::addJob(), getCostEstimate(), agx::JobGroup::init(), init(), operator=(), and setCostEstimate().
|
protected |
Definition at line 263 of file Job.h.
Referenced by operator=().
|
protected |
Definition at line 270 of file Job.h.
Referenced by index(), init(), and operator=().
|
protected |
Definition at line 257 of file Job.h.
Referenced by getName(), operator=(), and setName().
|
protected |
Definition at line 262 of file Job.h.
Referenced by addDependency(), decrementNumDependencies(), getNumDependencies(), incrementNumDependencies(), operator=(), removeAllDependencies(), removeDependency(), and setNumDependencies().
|
protected |
Definition at line 259 of file Job.h.
Referenced by addDependency(), getParentDependencies(), init(), operator=(), removeAllDependencies(), and removeDependency().
|
protected |
Definition at line 267 of file Job.h.
Referenced by getSyncTag(), operator=(), and setSyncTag().
|
protected |
|
protected |
Definition at line 265 of file Job.h.
Referenced by getTargetThread(), init(), operator=(), and setTargetThread().
|
protected |
Definition at line 264 of file Job.h.
Referenced by getTask(), operator=(), and setTask().
|
protected |
Definition at line 261 of file Job.h.
Referenced by getExecutionTime(), getTimer(), and operator=().