Logo ROOT   6.14/05
Reference Guide
List of all members | Public Member Functions | Private Types | Private Attributes | List of all members
ROOT::Experimental::TTaskGroup Class Reference

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.

Definition at line 21 of file TTaskGroup.hxx.

Public Member Functions

 TTaskGroup ()
 
 TTaskGroup (TTaskGroup &&other)
 
 TTaskGroup (const TTaskGroup &)=delete
 
 ~TTaskGroup ()
 
void Cancel ()
 Cancel all submitted tasks immediately. More...
 
TTaskGroupoperator= (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 Types

using TaskContainerPtr_t = void *
 

Private Attributes

std::atomic< bool > fCanRun {true}
 
TaskContainerPtr_t fTaskContainer {nullptr}
 Shield completely from implementation. More...
 

#include <ROOT/TTaskGroup.hxx>

Member Typedef Documentation

◆ TaskContainerPtr_t

Definition at line 31 of file TTaskGroup.hxx.

Constructor & Destructor Documentation

◆ TTaskGroup() [1/3]

ROOT::Experimental::TTaskGroup::TTaskGroup ( )

Definition at line 40 of file TTaskGroup.cxx.

◆ TTaskGroup() [2/3]

ROOT::Experimental::TTaskGroup::TTaskGroup ( TTaskGroup &&  other)

Definition at line 50 of file TTaskGroup.cxx.

◆ TTaskGroup() [3/3]

ROOT::Experimental::TTaskGroup::TTaskGroup ( const TTaskGroup )
delete

◆ ~TTaskGroup()

ROOT::Experimental::TTaskGroup::~TTaskGroup ( )

Definition at line 63 of file TTaskGroup.cxx.

Member Function Documentation

◆ Cancel()

void ROOT::Experimental::TTaskGroup::Cancel ( )

Cancel all submitted tasks immediately.

Definition at line 75 of file TTaskGroup.cxx.

◆ operator=()

TTaskGroup & ROOT::Experimental::TTaskGroup::operator= ( TTaskGroup &&  other)

Definition at line 55 of file TTaskGroup.cxx.

◆ Run()

void ROOT::Experimental::TTaskGroup::Run ( const std::function< void(void)> &  closure)

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 92 of file TTaskGroup.cxx.

◆ Wait()

void ROOT::Experimental::TTaskGroup::Wait ( )

Wait until all submitted items of work are completed.

This method is blocking.

Definition at line 107 of file TTaskGroup.cxx.

Member Data Documentation

◆ fCanRun

std::atomic<bool> ROOT::Experimental::TTaskGroup::fCanRun {true}
private

Definition at line 33 of file TTaskGroup.hxx.

◆ fTaskContainer

TaskContainerPtr_t ROOT::Experimental::TTaskGroup::fTaskContainer {nullptr}
private

Shield completely from implementation.

Definition at line 32 of file TTaskGroup.hxx.


The documentation for this class was generated from the following files: