Intel(R) Threading Building Blocks Doxygen Documentation  version 4.2.3
tbb::internal::while_task< Stream, Body > Class Template Reference

For internal use only. More...

#include <parallel_while.h>

Collaboration diagram for tbb::internal::while_task< Stream, Body >:

Private Member Functions

taskexecute () __TBB_override
 
 while_task (Stream &stream, const Body &body, empty_task &barrier)
 

Private Attributes

Stream & my_stream
 
const Body & my_body
 
empty_taskmy_barrier
 

Friends

class tbb::parallel_while< Body >
 

Detailed Description

template<typename Stream, typename Body>
class tbb::internal::while_task< Stream, Body >

For internal use only.

Gets block of iterations from a stream and packages them into a while_group_task.

Definition at line 34 of file parallel_while.h.

Constructor & Destructor Documentation

◆ while_task()

template<typename Stream , typename Body >
tbb::internal::while_task< Stream, Body >::while_task ( Stream &  stream,
const Body &  body,
empty_task barrier 
)
inlineprivate

Definition at line 110 of file parallel_while.h.

110  :
111  my_stream(stream),
112  my_body(body),
113  my_barrier(barrier)
114  {}

Member Function Documentation

◆ execute()

template<typename Stream , typename Body >
task* tbb::internal::while_task< Stream, Body >::execute ( )
inlineprivate

Definition at line 91 of file parallel_while.h.

91  {
92  typedef while_group_task<Body> block_type;
93  block_type& t = *new( allocate_additional_child_of(my_barrier) ) block_type(my_body);
94  size_t k=0;
95  while( my_stream.pop_if_present(t.my_arg[k]) ) {
96  if( ++k==block_type::max_arg_size ) {
97  // There might be more iterations.
98  recycle_to_reexecute();
99  break;
100  }
101  }
102  if( k==0 ) {
103  destroy(t);
104  return NULL;
105  } else {
106  t.size = k;
107  return &t;
108  }
109  }

References tbb::internal::while_task< Stream, Body >::my_barrier, tbb::internal::while_task< Stream, Body >::my_body, and tbb::internal::while_task< Stream, Body >::my_stream.

Friends And Related Function Documentation

◆ tbb::parallel_while< Body >

template<typename Stream , typename Body >
friend class tbb::parallel_while< Body >
friend

Definition at line 115 of file parallel_while.h.

Member Data Documentation

◆ my_barrier

template<typename Stream , typename Body >
empty_task& tbb::internal::while_task< Stream, Body >::my_barrier
private

Definition at line 90 of file parallel_while.h.

Referenced by tbb::internal::while_task< Stream, Body >::execute().

◆ my_body

template<typename Stream , typename Body >
const Body& tbb::internal::while_task< Stream, Body >::my_body
private

Definition at line 89 of file parallel_while.h.

Referenced by tbb::internal::while_task< Stream, Body >::execute().

◆ my_stream

template<typename Stream , typename Body >
Stream& tbb::internal::while_task< Stream, Body >::my_stream
private

Definition at line 88 of file parallel_while.h.

Referenced by tbb::internal::while_task< Stream, Body >::execute().


The documentation for this class was generated from the following file:
tbb::internal::while_task::my_body
const Body & my_body
Definition: parallel_while.h:89
tbb::internal::while_task::my_stream
Stream & my_stream
Definition: parallel_while.h:88
tbb::internal::while_task::my_barrier
empty_task & my_barrier
Definition: parallel_while.h:90

Copyright © 2005-2020 Intel Corporation. All Rights Reserved.

Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are registered trademarks or trademarks of Intel Corporation or its subsidiaries in the United States and other countries.

* Other names and brands may be claimed as the property of others.