17 #ifndef __TBB_task_group_H    18 #define __TBB_task_group_H    20 #define __TBB_task_group_H_include_area    26 #if TBB_PREVIEW_ISOLATED_TASK_GROUP && __TBB_TASK_ISOLATION    30 #if __TBB_TASK_GROUP_CONTEXT    40 #if TBB_PREVIEW_ISOLATED_TASK_GROUP && __TBB_TASK_ISOLATION    41 class isolated_task_group;
    49 #if TBB_PREVIEW_ISOLATED_TASK_GROUP && __TBB_TASK_ISOLATION    50     friend class isolated_task_group;
    66 #if __TBB_CPP11_RVALUE_REF_PRESENT    82 class task_handle_task : 
public task {
   122     template<
typename Task, 
typename F>
   124         return new( task::allocate_additional_child_of(*
my_root) ) Task( internal::forward<F>(f) );
   137 #if __TBB_CPP17_UNCAUGHT_EXCEPTIONS_PRESENT   138             bool stack_unwinding_in_progress = std::uncaught_exceptions() > 0;
   140             bool stack_unwinding_in_progress = std::uncaught_exception();
   153             if ( !stack_unwinding_in_progress )
   199         internal_run< internal::task_handle_task<F> >( 
h );
   205 #if __TBB_CPP11_RVALUE_REF_PRESENT   212     void run(
const F& f) {
   219         return internal_run_and_wait<const F>( f );
   226         return internal_run_and_wait< task_handle<F> >( 
h );
   236         return internal_run_and_wait< task_handle<F> >( 
h );
   241         my_root->set_ref_count(1);
   246 #if TBB_PREVIEW_ISOLATED_TASK_GROUP && __TBB_TASK_ISOLATION   248     using interface7::internal::delegate_base;
   251     class spawn_delegate : 
public delegate_base {
   254             task::spawn(*task_to_spawn);
   257         spawn_delegate(
task* a_task) : task_to_spawn(a_task) {}
   260     class wait_delegate : 
public delegate_base {
   269             : tg(a_group), status(tgs) {}
   273     class run_wait_delegate : 
public wait_delegate {
   276             status = tg.run_and_wait( func );
   280             : wait_delegate(a_group, tgs), func(a_func) {}
   284 class isolated_task_group : 
public task_group {
   285     intptr_t this_isolation() {
   286         return reinterpret_cast<intptr_t>(
this);
   289     isolated_task_group () : task_group() {}
   291 #if __TBB_CPP11_RVALUE_REF_PRESENT   294         internal::spawn_delegate sd(
   301     void run(
const F& f) {
   302         internal::spawn_delegate sd( prepare_task< internal::function_task<F> >(f) );
   310         internal::run_wait_delegate< const F > rwd( *
this, f, result );
   318     void run( task_handle<F>& 
h ) {
   319         internal::spawn_delegate sd( prepare_task< internal::task_handle_task<F> >(
h) );
   326         internal::run_wait_delegate< task_handle<F> > rwd( *
this, 
h, result );
   334         internal::wait_delegate wd( *
this, result );
   340 #endif // TBB_PREVIEW_ISOLATED_TASK_GROUP && __TBB_TASK_ISOLATION   347 #if __TBB_CPP11_RVALUE_REF_PRESENT   355     return task_handle<F>( f );
   364 #undef __TBB_task_group_H_include_area 
~task_group_base() __TBB_NOEXCEPT(false)
 
bool __TBB_EXPORTED_METHOD cancel_group_execution()
Initiates cancellation of all tasks in this cancellation group and its subordinate groups.
 
Used to form groups of tasks.
 
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function h
 
void wait_for_all()
Wait for reference count to become one, and set reference count to zero.
 
task * prepare_task(__TBB_FORWARDING_REF(F) f)
 
bool is_cancelled() const
Returns true if the context has received cancellation request.
 
Base class for user-defined tasks.
 
task_group_base(uintptr_t traits=0)
 
task_handle_task(task_handle< F > &h)
 
task_group_status run_and_wait(task_handle< F > &h)
 
void run(task_handle< F > &h)
 
Base class for types that should not be assigned.
 
static const intptr_t scheduled
 
void __TBB_EXPORTED_METHOD register_pending_exception()
Records the pending exception, and cancels the task group.
 
void __TBB_EXPORTED_METHOD reset()
Forcefully reinitializes the context after the task tree it was associated with is completed.
 
static internal::allocate_root_proxy allocate_root()
Returns proxy for overloaded new that allocates a root task.
 
bool __TBB_EXPORTED_METHOD is_group_execution_cancelled() const
Returns true if the context received cancellation request.
 
task_handle< F > & my_handle
 
#define __TBB_NOEXCEPT(expression)
 
task * execute() __TBB_override
Should be overridden by derived classes.
 
task_handle< typename internal::strip< F >::type > make_task(F &&f)
 
task that does nothing. Useful for synchronization.
 
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task * task
 
static task &__TBB_EXPORTED_FUNC self()
The innermost task being executed or destroyed by the current thread at the moment.
 
Base class for types that should not be copied or assigned.
 
int ref_count() const
The internal reference count.
 
void set_ref_count(int count)
Set reference count.
 
void __TBB_EXPORTED_FUNC isolate_within_arena(delegate_base &d, intptr_t isolation=0)
 
task_group_status internal_run_and_wait(F &f)
 
#define __TBB_FORWARDING_REF(A)
 
#define __TBB_ASSERT(predicate, comment)
No-op version of __TBB_ASSERT.
 
task_group_context my_context
 
bool is_current_task_group_canceling()
 
void increment_ref_count()
Atomically increment reference count.
 
task_group_status run_and_wait(const F &f)
 
void throw_exception(exception_id eid)
Versionless convenience wrapper for throw_exception_v4()
 
task_group_status run_and_wait(task_handle< F > &h)
 
int decrement_ref_count()
Atomically decrement reference count and returns its new value.
 
void move(tbb_thread &t1, tbb_thread &t2)