ROOT 6.16/01 Reference Guide |
A class to manage the asynchronous execution of work items.
A TTaskGroup represents concurrent execution of a group of tasks. Tasks may be dynamically added to the group as it is executing.
A TTaskGroup represents concurrent execution of a group of tasks. Tasks may be dynamically added to the group as it is executing. Nesting TTaskGroup instances may result in a runtime overhead.
Definition at line 21 of file TTaskGroup.hxx.
Public Member Functions | |
TTaskGroup () | |
TTaskGroup (const TTaskGroup &)=delete | |
TTaskGroup (TTaskGroup &&other) | |
~TTaskGroup () | |
void | Cancel () |
Cancel all submitted tasks immediately. More... | |
TTaskGroup & | operator= (TTaskGroup &&other) |
void | Run (const std::function< void(void)> &closure) |
Add to the group an item of work which will be ran asynchronously. More... | |
void | Wait () |
Wait until all submitted items of work are completed. More... | |
Private Member Functions | |
void | ExecuteInIsolation (const std::function< void(void)> &operation) |
Run operation in the internal task arena to implement work isolation, i.e. More... | |
Private Attributes | |
std::atomic< bool > | fCanRun {true} |
void * | fTaskArena {nullptr} |
void * | fTaskContainer {nullptr} |
#include <ROOT/TTaskGroup.hxx>
ROOT::Experimental::TTaskGroup::TTaskGroup | ( | ) |
Definition at line 60 of file TTaskGroup.cxx.
ROOT::Experimental::TTaskGroup::TTaskGroup | ( | TTaskGroup && | other | ) |
Definition at line 71 of file TTaskGroup.cxx.
|
delete |
ROOT::Experimental::TTaskGroup::~TTaskGroup | ( | ) |
Definition at line 86 of file TTaskGroup.cxx.
void ROOT::Experimental::TTaskGroup::Cancel | ( | ) |
Cancel all submitted tasks immediately.
Definition at line 111 of file TTaskGroup.cxx.
|
private |
Run operation in the internal task arena to implement work isolation, i.e.
prevent stealing of work items spawned by ancestors.
Definition at line 100 of file TTaskGroup.cxx.
TTaskGroup & ROOT::Experimental::TTaskGroup::operator= | ( | TTaskGroup && | other | ) |
Definition at line 76 of file TTaskGroup.cxx.
Add to the group an item of work which will be ran asynchronously.
Adding many small items of work to the TTaskGroup is not efficient, unless they run for long enough. If the work to be done is little, look try to express nested parallelism or resort to other constructs such as the TThreadExecutor. Trying to add a work item to the group while it is in waiting state makes the method block.
Definition at line 128 of file TTaskGroup.cxx.
void ROOT::Experimental::TTaskGroup::Wait | ( | ) |
Wait until all submitted items of work are completed.
This method is blocking.
Definition at line 143 of file TTaskGroup.cxx.
|
private |
Definition at line 33 of file TTaskGroup.hxx.
|
private |
Definition at line 32 of file TTaskGroup.hxx.
|
private |
Definition at line 31 of file TTaskGroup.hxx.