Intel(R) Threading Building Blocks Doxygen Documentation  version 4.2.3
Algorithms

Classes

class  tbb::blocked_range< Value >
 A range over which to iterate. More...
 
class  tbb::blocked_range2d< RowValue, ColValue >
 A 2-dimensional range that models the Range concept. More...
 
class  tbb::blocked_range3d< PageValue, RowValue, ColValue >
 A 3-dimensional range that models the Range concept. More...
 
class  tbb::interface9::internal::parallel_do_operator_selector< Body, Item >
 For internal use only. More...
 
class  tbb::interface9::internal::do_iteration_task< Body, Item >
 For internal use only. More...
 
class  tbb::interface9::internal::parallel_do_feeder_impl< Body, Item >
 For internal use only. More...
 
class  tbb::interface9::internal::do_group_task_forward< Iterator, Body, Item >
 For internal use only. More...
 
class  tbb::interface9::internal::do_task_iter< Iterator, Body, Item >
 For internal use only. More...
 
class  tbb::interface9::internal::start_for< Range, Body, Partitioner >
 Task type used in parallel_for. More...
 
class  tbb::interface9::internal::finish_reduce< Body >
 Task type used to combine the partial results of parallel_reduce. More...
 
class  tbb::interface9::internal::start_reduce< Range, Body, Partitioner >
 Task type used to split the work of parallel_reduce. More...
 
class  tbb::interface9::internal::finish_deterministic_reduce< Body >
 Task type used to combine the partial results of parallel_deterministic_reduce. More...
 
class  tbb::interface9::internal::start_deterministic_reduce< Range, Body, Partitioner >
 Task type used to split the work of parallel_deterministic_reduce. More...
 
class  tbb::internal::lambda_reduce_body< Range, Value, RealBody, Reduction >
 Auxiliary class for parallel_reduce; for internal use only. More...
 
struct  tbb::pre_scan_tag
 Used to indicate that the initial scan is being performed. More...
 
struct  tbb::final_scan_tag
 Used to indicate that the final scan is being performed. More...
 
class  tbb::internal::final_sum< Range, Body >
 Performs final scan for a leaf. More...
 
class  tbb::internal::sum_node< Range, Body >
 Split work to be done in the scan. More...
 
class  tbb::internal::finish_scan< Range, Body >
 Combine partial results. More...
 
class  tbb::internal::start_scan< Range, Body, Partitioner >
 Initial task to split the work. More...
 
class  tbb::interface9::internal::quick_sort_range< RandomAccessIterator, Compare >
 Range used in quicksort to split elements into subranges based on a value. More...
 
class  tbb::interface9::internal::quick_sort_pretest_body< RandomAccessIterator, Compare >
 Body class used to test if elements in a range are presorted. More...
 
struct  tbb::interface9::internal::quick_sort_body< RandomAccessIterator, Compare >
 Body class used to sort elements in a range that is smaller than the grainsize. More...
 
class  tbb::internal::while_iteration_task< Body >
 For internal use only. More...
 
class  tbb::internal::while_group_task< Body >
 For internal use only. More...
 
class  tbb::internal::while_task< Stream, Body >
 For internal use only. More...
 
class  tbb::parallel_while< Body >
 Parallel iteration over a stream, with optional addition of more work. More...
 
class  tbb::simple_partitioner
 A simple partitioner. More...
 
class  tbb::auto_partitioner
 An auto partitioner. More...
 
class  tbb::filter
 A stage in a pipeline. More...
 
class  tbb::thread_bound_filter
 A stage in a pipeline served by a user thread. More...
 
class  tbb::pipeline
 A processing pipeline that applies filters to items. More...
 
class  tbb::split
 Dummy type that distinguishes splitting constructor from copy constructor. More...
 

Functions

template<typename Range , typename Body >
void tbb::serial::interface9::parallel_for (const Range &range, const Body &body)
 Parallel iteration over range with default partitioner. More...
 
template<typename Range , typename Body >
void tbb::serial::interface9::parallel_for (const Range &range, const Body &body, const simple_partitioner &partitioner)
 Parallel iteration over range with simple partitioner. More...
 
template<typename Range , typename Body >
void tbb::serial::interface9::parallel_for (const Range &range, const Body &body, const auto_partitioner &partitioner)
 Parallel iteration over range with auto_partitioner. More...
 
template<typename Range , typename Body >
void tbb::serial::interface9::parallel_for (const Range &range, const Body &body, const static_partitioner &partitioner)
 Parallel iteration over range with static_partitioner. More...
 
template<typename Range , typename Body >
void tbb::serial::interface9::parallel_for (const Range &range, const Body &body, affinity_partitioner &partitioner)
 Parallel iteration over range with affinity_partitioner. More...
 
template<typename Iterator , typename Body , typename Item >
void tbb::interface9::internal::run_parallel_do (Iterator first, Iterator last, const Body &body, task_group_context &context)
 For internal use only. More...
 
template<typename Iterator , typename Body , typename Item >
void tbb::interface9::internal::select_parallel_do (Iterator first, Iterator last, const Body &body, void(Body::*)(Item) const, task_group_context &context)
 For internal use only. More...
 
template<typename Iterator , typename Body , typename Item , typename _Item >
void tbb::interface9::internal::select_parallel_do (Iterator first, Iterator last, const Body &body, void(Body::*)(Item, parallel_do_feeder< _Item > &) const, task_group_context &context)
 For internal use only. More...
 
template<typename RandomAccessIterator , typename Compare >
void tbb::interface9::internal::parallel_quick_sort (RandomAccessIterator begin, RandomAccessIterator end, const Compare &comp)
 Wrapper method to initiate the sort by calling parallel_for. More...
 

parallel_do

See also requirements on parallel_do Body.

template<typename Iterator , typename Body >
void tbb::parallel_do (Iterator first, Iterator last, const Body &body)
 Parallel iteration over a range, with optional addition of more work. More...
 
template<typename Iterator , typename Body >
void tbb::parallel_do (Iterator first, Iterator last, const Body &body, task_group_context &context)
 Parallel iteration over a range, with optional addition of more work and user-supplied context. More...
 
template<typename Range , typename Body >
void tbb::parallel_do (Range &rng, const Body &body)
 
template<typename Range , typename Body >
void tbb::parallel_do (const Range &rng, const Body &body)
 
template<typename Range , typename Body >
void tbb::parallel_do (Range &rng, const Body &body, task_group_context &context)
 
template<typename Range , typename Body >
void tbb::parallel_do (const Range &rng, const Body &body, task_group_context &context)
 

parallel_for

See also requirements on Range and parallel_for Body.

template<typename Range , typename Body >
void tbb::parallel_for (const Range &range, const Body &body)
 Parallel iteration over range with default partitioner. More...
 
template<typename Range , typename Body >
void tbb::parallel_for (const Range &range, const Body &body, const simple_partitioner &partitioner)
 Parallel iteration over range with simple partitioner. More...
 
template<typename Range , typename Body >
void tbb::parallel_for (const Range &range, const Body &body, const auto_partitioner &partitioner)
 Parallel iteration over range with auto_partitioner. More...
 
template<typename Range , typename Body >
void tbb::parallel_for (const Range &range, const Body &body, const static_partitioner &partitioner)
 Parallel iteration over range with static_partitioner. More...
 
template<typename Range , typename Body >
void tbb::parallel_for (const Range &range, const Body &body, affinity_partitioner &partitioner)
 Parallel iteration over range with affinity_partitioner. More...
 
template<typename Range , typename Body >
void tbb::parallel_for (const Range &range, const Body &body, task_group_context &context)
 Parallel iteration over range with default partitioner and user-supplied context. More...
 
template<typename Range , typename Body >
void tbb::parallel_for (const Range &range, const Body &body, const simple_partitioner &partitioner, task_group_context &context)
 Parallel iteration over range with simple partitioner and user-supplied context. More...
 
template<typename Range , typename Body >
void tbb::parallel_for (const Range &range, const Body &body, const auto_partitioner &partitioner, task_group_context &context)
 Parallel iteration over range with auto_partitioner and user-supplied context. More...
 
template<typename Range , typename Body >
void tbb::parallel_for (const Range &range, const Body &body, const static_partitioner &partitioner, task_group_context &context)
 Parallel iteration over range with static_partitioner and user-supplied context. More...
 
template<typename Range , typename Body >
void tbb::parallel_for (const Range &range, const Body &body, affinity_partitioner &partitioner, task_group_context &context)
 Parallel iteration over range with affinity_partitioner and user-supplied context. More...
 

parallel_for_each

template<typename Iterator , typename Function >
void tbb::parallel_for_each (Iterator first, Iterator last, const Function &f, task_group_context &context)
 Calls function f for all items from [first, last) interval using user-supplied context. More...
 
template<typename Range , typename Function >
void tbb::parallel_for_each (Range &rng, const Function &f, task_group_context &context)
 Calls function f for all items from rng using user-supplied context. More...
 
template<typename Range , typename Function >
void tbb::parallel_for_each (const Range &rng, const Function &f, task_group_context &context)
 Calls function f for all items from const rng user-supplied context. More...
 
template<typename Iterator , typename Function >
void tbb::parallel_for_each (Iterator first, Iterator last, const Function &f)
 Uses default context. More...
 
template<typename Range , typename Function >
void tbb::parallel_for_each (Range &rng, const Function &f)
 Uses default context. More...
 
template<typename Range , typename Function >
void tbb::parallel_for_each (const Range &rng, const Function &f)
 Uses default context. More...
 

parallel_invoke

template<typename F0 , typename F1 >
void tbb::parallel_invoke (const F0 &f0, const F1 &f1, tbb::task_group_context &context)
 Executes a list of tasks in parallel and waits for all tasks to complete. More...
 
template<typename F0 , typename F1 , typename F2 >
void tbb::parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, tbb::task_group_context &context)
 
template<typename F0 , typename F1 , typename F2 , typename F3 >
void tbb::parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, tbb::task_group_context &context)
 
template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 >
void tbb::parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, tbb::task_group_context &context)
 
template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 >
void tbb::parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, tbb::task_group_context &context)
 
template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 >
void tbb::parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6, tbb::task_group_context &context)
 
template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 >
void tbb::parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6, const F7 &f7, tbb::task_group_context &context)
 
template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 , typename F8 >
void tbb::parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6, const F7 &f7, const F8 &f8, tbb::task_group_context &context)
 
template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 , typename F8 , typename F9 >
void tbb::parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6, const F7 &f7, const F8 &f8, const F9 &f9, tbb::task_group_context &context)
 
template<typename F0 , typename F1 >
void tbb::parallel_invoke (const F0 &f0, const F1 &f1)
 
template<typename F0 , typename F1 , typename F2 >
void tbb::parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2)
 
template<typename F0 , typename F1 , typename F2 , typename F3 >
void tbb::parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3)
 
template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 >
void tbb::parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4)
 
template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 >
void tbb::parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5)
 
template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 >
void tbb::parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6)
 
template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 >
void tbb::parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6, const F7 &f7)
 
template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 , typename F8 >
void tbb::parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6, const F7 &f7, const F8 &f8)
 
template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 , typename F8 , typename F9 >
void tbb::parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6, const F7 &f7, const F8 &f8, const F9 &f9)
 

parallel_reduce

See also requirements on Range and parallel_reduce Body.

template<typename Range , typename Body >
void tbb::parallel_reduce (const Range &range, Body &body)
 Parallel iteration with reduction and default partitioner. More...
 
template<typename Range , typename Body >
void tbb::parallel_reduce (const Range &range, Body &body, const simple_partitioner &partitioner)
 Parallel iteration with reduction and simple_partitioner. More...
 
template<typename Range , typename Body >
void tbb::parallel_reduce (const Range &range, Body &body, const auto_partitioner &partitioner)
 Parallel iteration with reduction and auto_partitioner. More...
 
template<typename Range , typename Body >
void tbb::parallel_reduce (const Range &range, Body &body, const static_partitioner &partitioner)
 Parallel iteration with reduction and static_partitioner. More...
 
template<typename Range , typename Body >
void tbb::parallel_reduce (const Range &range, Body &body, affinity_partitioner &partitioner)
 Parallel iteration with reduction and affinity_partitioner. More...
 
template<typename Range , typename Body >
void tbb::parallel_reduce (const Range &range, Body &body, task_group_context &context)
 Parallel iteration with reduction, default partitioner and user-supplied context. More...
 
template<typename Range , typename Body >
void tbb::parallel_reduce (const Range &range, Body &body, const simple_partitioner &partitioner, task_group_context &context)
 Parallel iteration with reduction, simple partitioner and user-supplied context. More...
 
template<typename Range , typename Body >
void tbb::parallel_reduce (const Range &range, Body &body, const auto_partitioner &partitioner, task_group_context &context)
 Parallel iteration with reduction, auto_partitioner and user-supplied context. More...
 
template<typename Range , typename Body >
void tbb::parallel_reduce (const Range &range, Body &body, const static_partitioner &partitioner, task_group_context &context)
 Parallel iteration with reduction, static_partitioner and user-supplied context. More...
 
template<typename Range , typename Body >
void tbb::parallel_reduce (const Range &range, Body &body, affinity_partitioner &partitioner, task_group_context &context)
 Parallel iteration with reduction, affinity_partitioner and user-supplied context. More...
 
template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_reduce (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction)
 Parallel iteration with reduction and default partitioner. More...
 
template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_reduce (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const simple_partitioner &partitioner)
 Parallel iteration with reduction and simple_partitioner. More...
 
template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_reduce (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const auto_partitioner &partitioner)
 Parallel iteration with reduction and auto_partitioner. More...
 
template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_reduce (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const static_partitioner &partitioner)
 Parallel iteration with reduction and static_partitioner. More...
 
template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_reduce (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, affinity_partitioner &partitioner)
 Parallel iteration with reduction and affinity_partitioner. More...
 
template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_reduce (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, task_group_context &context)
 Parallel iteration with reduction, default partitioner and user-supplied context. More...
 
template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_reduce (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const simple_partitioner &partitioner, task_group_context &context)
 Parallel iteration with reduction, simple partitioner and user-supplied context. More...
 
template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_reduce (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const auto_partitioner &partitioner, task_group_context &context)
 Parallel iteration with reduction, auto_partitioner and user-supplied context. More...
 
template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_reduce (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const static_partitioner &partitioner, task_group_context &context)
 Parallel iteration with reduction, static_partitioner and user-supplied context. More...
 
template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_reduce (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, affinity_partitioner &partitioner, task_group_context &context)
 Parallel iteration with reduction, affinity_partitioner and user-supplied context. More...
 
template<typename Range , typename Body >
void tbb::parallel_deterministic_reduce (const Range &range, Body &body)
 Parallel iteration with deterministic reduction and default simple partitioner. More...
 
template<typename Range , typename Body >
void tbb::parallel_deterministic_reduce (const Range &range, Body &body, const simple_partitioner &partitioner)
 Parallel iteration with deterministic reduction and simple partitioner. More...
 
template<typename Range , typename Body >
void tbb::parallel_deterministic_reduce (const Range &range, Body &body, const static_partitioner &partitioner)
 Parallel iteration with deterministic reduction and static partitioner. More...
 
template<typename Range , typename Body >
void tbb::parallel_deterministic_reduce (const Range &range, Body &body, task_group_context &context)
 Parallel iteration with deterministic reduction, default simple partitioner and user-supplied context. More...
 
template<typename Range , typename Body >
void tbb::parallel_deterministic_reduce (const Range &range, Body &body, const simple_partitioner &partitioner, task_group_context &context)
 Parallel iteration with deterministic reduction, simple partitioner and user-supplied context. More...
 
template<typename Range , typename Body >
void tbb::parallel_deterministic_reduce (const Range &range, Body &body, const static_partitioner &partitioner, task_group_context &context)
 Parallel iteration with deterministic reduction, static partitioner and user-supplied context. More...
 
template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_deterministic_reduce (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction)
 Parallel iteration with deterministic reduction and default simple partitioner. More...
 
template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_deterministic_reduce (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const simple_partitioner &partitioner)
 Parallel iteration with deterministic reduction and simple partitioner. More...
 
template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_deterministic_reduce (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const static_partitioner &partitioner)
 Parallel iteration with deterministic reduction and static partitioner. More...
 
template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_deterministic_reduce (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, task_group_context &context)
 Parallel iteration with deterministic reduction, default simple partitioner and user-supplied context. More...
 
template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_deterministic_reduce (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const simple_partitioner &partitioner, task_group_context &context)
 Parallel iteration with deterministic reduction, simple partitioner and user-supplied context. More...
 
template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_deterministic_reduce (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const static_partitioner &partitioner, task_group_context &context)
 Parallel iteration with deterministic reduction, static partitioner and user-supplied context. More...
 

parallel_scan

See also requirements on Range and parallel_scan Body.

template<typename Range , typename Body >
void tbb::parallel_scan (const Range &range, Body &body)
 Parallel prefix with default partitioner. More...
 
template<typename Range , typename Body >
void tbb::parallel_scan (const Range &range, Body &body, const simple_partitioner &partitioner)
 Parallel prefix with simple_partitioner. More...
 
template<typename Range , typename Body >
void tbb::parallel_scan (const Range &range, Body &body, const auto_partitioner &partitioner)
 Parallel prefix with auto_partitioner. More...
 
template<typename Range , typename Value , typename Scan , typename ReverseJoin >
Value tbb::parallel_scan (const Range &range, const Value &identity, const Scan &scan, const ReverseJoin &reverse_join)
 Parallel prefix with default partitioner. More...
 
template<typename Range , typename Value , typename Scan , typename ReverseJoin >
Value tbb::parallel_scan (const Range &range, const Value &identity, const Scan &scan, const ReverseJoin &reverse_join, const simple_partitioner &partitioner)
 Parallel prefix with simple_partitioner. More...
 
template<typename Range , typename Value , typename Scan , typename ReverseJoin >
Value tbb::parallel_scan (const Range &range, const Value &identity, const Scan &scan, const ReverseJoin &reverse_join, const auto_partitioner &partitioner)
 Parallel prefix with auto_partitioner. More...
 

parallel_sort

See also requirements on iterators for parallel_sort.

template<typename RandomAccessIterator , typename Compare >
void tbb::parallel_sort (RandomAccessIterator begin, RandomAccessIterator end, const Compare &comp)
 Sorts the data in [begin,end) using the given comparator. More...
 
template<typename RandomAccessIterator >
void tbb::parallel_sort (RandomAccessIterator begin, RandomAccessIterator end)
 Sorts the data in [begin,end) with a default comparator std::less<RandomAccessIterator> More...
 
template<typename Range , typename Compare >
void tbb::parallel_sort (Range &rng, const Compare &comp)
 Sorts the data in rng using the given comparator. More...
 
template<typename Range >
void tbb::parallel_sort (Range &rng)
 Sorts the data in rng with a default comparator std::less<RandomAccessIterator> More...
 
template<typename T >
void tbb::parallel_sort (T *begin, T *end)
 Sorts the data in the range [begin,end) with a default comparator std::less<T> More...
 

Detailed Description

Function Documentation

◆ parallel_deterministic_reduce() [1/12]

template<typename Range , typename Body >
void tbb::parallel_deterministic_reduce ( const Range &  range,
Body &  body 
)

Parallel iteration with deterministic reduction and default simple partitioner.

Definition at line 549 of file parallel_reduce.h.

549  {
550  internal::start_deterministic_reduce<Range, Body, const simple_partitioner>::run(range, body, simple_partitioner());
551 }

References tbb::interface9::internal::start_deterministic_reduce< Range, Body, Partitioner >::run().

Referenced by tbb::parallel_deterministic_reduce().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ parallel_deterministic_reduce() [2/12]

template<typename Range , typename Body >
void tbb::parallel_deterministic_reduce ( const Range &  range,
Body &  body,
const simple_partitioner partitioner 
)

Parallel iteration with deterministic reduction and simple partitioner.

Definition at line 556 of file parallel_reduce.h.

556  {
557  internal::start_deterministic_reduce<Range, Body, const simple_partitioner>::run(range, body, partitioner);
558 }

References tbb::interface9::internal::start_deterministic_reduce< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_deterministic_reduce() [3/12]

template<typename Range , typename Body >
void tbb::parallel_deterministic_reduce ( const Range &  range,
Body &  body,
const static_partitioner partitioner 
)

Parallel iteration with deterministic reduction and static partitioner.

Definition at line 563 of file parallel_reduce.h.

563  {
564  internal::start_deterministic_reduce<Range, Body, const static_partitioner>::run(range, body, partitioner);
565 }

References tbb::interface9::internal::start_deterministic_reduce< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_deterministic_reduce() [4/12]

template<typename Range , typename Body >
void tbb::parallel_deterministic_reduce ( const Range &  range,
Body &  body,
task_group_context context 
)

Parallel iteration with deterministic reduction, default simple partitioner and user-supplied context.

Definition at line 571 of file parallel_reduce.h.

571  {
572  internal::start_deterministic_reduce<Range,Body, const simple_partitioner>::run( range, body, simple_partitioner(), context );
573 }

References tbb::interface9::internal::start_deterministic_reduce< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_deterministic_reduce() [5/12]

template<typename Range , typename Body >
void tbb::parallel_deterministic_reduce ( const Range &  range,
Body &  body,
const simple_partitioner partitioner,
task_group_context context 
)

Parallel iteration with deterministic reduction, simple partitioner and user-supplied context.

Definition at line 578 of file parallel_reduce.h.

578  {
579  internal::start_deterministic_reduce<Range, Body, const simple_partitioner>::run(range, body, partitioner, context);
580 }

References tbb::interface9::internal::start_deterministic_reduce< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_deterministic_reduce() [6/12]

template<typename Range , typename Body >
void tbb::parallel_deterministic_reduce ( const Range &  range,
Body &  body,
const static_partitioner partitioner,
task_group_context context 
)

Parallel iteration with deterministic reduction, static partitioner and user-supplied context.

Definition at line 585 of file parallel_reduce.h.

585  {
586  internal::start_deterministic_reduce<Range, Body, const static_partitioner>::run(range, body, partitioner, context);
587 }

References tbb::interface9::internal::start_deterministic_reduce< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_deterministic_reduce() [7/12]

template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_deterministic_reduce ( const Range &  range,
const Value &  identity,
const RealBody &  real_body,
const Reduction &  reduction 
)

Parallel iteration with deterministic reduction and default simple partitioner.

parallel_reduce overloads that work with anonymous function objects (see also requirements on parallel_reduce anonymous function objects).

Definition at line 597 of file parallel_reduce.h.

597  {
598  return parallel_deterministic_reduce(range, identity, real_body, reduction, simple_partitioner());
599 }
Value parallel_deterministic_reduce(const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const static_partitioner &partitioner, task_group_context &context)
Parallel iteration with deterministic reduction, static partitioner and user-supplied context.

References tbb::parallel_deterministic_reduce().

Here is the call graph for this function:

◆ parallel_deterministic_reduce() [8/12]

template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_deterministic_reduce ( const Range &  range,
const Value &  identity,
const RealBody &  real_body,
const Reduction &  reduction,
const simple_partitioner partitioner 
)

Parallel iteration with deterministic reduction and simple partitioner.

Definition at line 604 of file parallel_reduce.h.

604  {
605  internal::lambda_reduce_body<Range,Value,RealBody,Reduction> body(identity, real_body, reduction);
606  internal::start_deterministic_reduce<Range,internal::lambda_reduce_body<Range,Value,RealBody,Reduction>, const simple_partitioner>
607  ::run(range, body, partitioner);
608  return body.result();
609 }

◆ parallel_deterministic_reduce() [9/12]

template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_deterministic_reduce ( const Range &  range,
const Value &  identity,
const RealBody &  real_body,
const Reduction &  reduction,
const static_partitioner partitioner 
)

Parallel iteration with deterministic reduction and static partitioner.

Definition at line 614 of file parallel_reduce.h.

614  {
615  internal::lambda_reduce_body<Range, Value, RealBody, Reduction> body(identity, real_body, reduction);
616  internal::start_deterministic_reduce<Range, internal::lambda_reduce_body<Range, Value, RealBody, Reduction>, const static_partitioner>
617  ::run(range, body, partitioner);
618  return body.result();
619 }

◆ parallel_deterministic_reduce() [10/12]

template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_deterministic_reduce ( const Range &  range,
const Value &  identity,
const RealBody &  real_body,
const Reduction &  reduction,
task_group_context context 
)

Parallel iteration with deterministic reduction, default simple partitioner and user-supplied context.

Definition at line 624 of file parallel_reduce.h.

625  {
626  return parallel_deterministic_reduce(range, identity, real_body, reduction, simple_partitioner(), context);
627 }
Value parallel_deterministic_reduce(const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const static_partitioner &partitioner, task_group_context &context)
Parallel iteration with deterministic reduction, static partitioner and user-supplied context.

References tbb::parallel_deterministic_reduce().

Here is the call graph for this function:

◆ parallel_deterministic_reduce() [11/12]

template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_deterministic_reduce ( const Range &  range,
const Value &  identity,
const RealBody &  real_body,
const Reduction &  reduction,
const simple_partitioner partitioner,
task_group_context context 
)

Parallel iteration with deterministic reduction, simple partitioner and user-supplied context.

Definition at line 632 of file parallel_reduce.h.

633  {
634  internal::lambda_reduce_body<Range, Value, RealBody, Reduction> body(identity, real_body, reduction);
635  internal::start_deterministic_reduce<Range, internal::lambda_reduce_body<Range, Value, RealBody, Reduction>, const simple_partitioner>
636  ::run(range, body, partitioner, context);
637  return body.result();
638 }

◆ parallel_deterministic_reduce() [12/12]

template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_deterministic_reduce ( const Range &  range,
const Value &  identity,
const RealBody &  real_body,
const Reduction &  reduction,
const static_partitioner partitioner,
task_group_context context 
)

Parallel iteration with deterministic reduction, static partitioner and user-supplied context.

Definition at line 643 of file parallel_reduce.h.

644  {
645  internal::lambda_reduce_body<Range, Value, RealBody, Reduction> body(identity, real_body, reduction);
646  internal::start_deterministic_reduce<Range, internal::lambda_reduce_body<Range, Value, RealBody, Reduction>, const static_partitioner>
647  ::run(range, body, partitioner, context);
648  return body.result();
649 }

◆ parallel_do() [1/6]

template<typename Iterator , typename Body >
void tbb::parallel_do ( Iterator  first,
Iterator  last,
const Body &  body 
)

Parallel iteration over a range, with optional addition of more work.

Definition at line 498 of file parallel_do.h.

499 {
500  if ( first == last )
501  return;
502 #if __TBB_TASK_GROUP_CONTEXT
503  task_group_context context(internal::PARALLEL_DO);
504 #endif
505  interface9::internal::select_parallel_do( first, last, body, &Body::operator()
507  , context
508 #endif
509  );
510 }
auto first(Container &c) -> decltype(begin(c))
auto last(Container &c) -> decltype(begin(c))
void select_parallel_do(Iterator first, Iterator last, const Body &body, void(Body::*)(Item, parallel_do_feeder< _Item > &) const, task_group_context &context)
For internal use only.
Definition: parallel_do.h:456
#define __TBB_TASK_GROUP_CONTEXT
Definition: tbb_config.h:546

References __TBB_TASK_GROUP_CONTEXT, tbb::internal::first(), tbb::internal::last(), and tbb::interface9::internal::select_parallel_do().

Referenced by tbb::internal::parallel_for_each_impl< Iterator, Function, Generic >::doit(), and tbb::parallel_do().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ parallel_do() [2/6]

template<typename Range , typename Body >
void tbb::parallel_do ( Range &  rng,
const Body &  body 
)

Definition at line 513 of file parallel_do.h.

513  {
515 }
auto first(Container &c) -> decltype(begin(c))
auto last(Container &c) -> decltype(begin(c))
void parallel_do(const Range &rng, const Body &body, task_group_context &context)
Definition: parallel_do.h:539

References tbb::internal::first(), tbb::internal::last(), and tbb::parallel_do().

Here is the call graph for this function:

◆ parallel_do() [3/6]

template<typename Range , typename Body >
void tbb::parallel_do ( const Range &  rng,
const Body &  body 
)

Definition at line 518 of file parallel_do.h.

518  {
520 }
auto first(Container &c) -> decltype(begin(c))
auto last(Container &c) -> decltype(begin(c))
void parallel_do(const Range &rng, const Body &body, task_group_context &context)
Definition: parallel_do.h:539

References tbb::internal::first(), tbb::internal::last(), and tbb::parallel_do().

Here is the call graph for this function:

◆ parallel_do() [4/6]

template<typename Iterator , typename Body >
void tbb::parallel_do ( Iterator  first,
Iterator  last,
const Body &  body,
task_group_context context 
)

Parallel iteration over a range, with optional addition of more work and user-supplied context.

Definition at line 526 of file parallel_do.h.

527 {
528  if ( first == last )
529  return;
530  interface9::internal::select_parallel_do( first, last, body, &Body::operator(), context );
531 }
auto first(Container &c) -> decltype(begin(c))
auto last(Container &c) -> decltype(begin(c))
void select_parallel_do(Iterator first, Iterator last, const Body &body, void(Body::*)(Item, parallel_do_feeder< _Item > &) const, task_group_context &context)
For internal use only.
Definition: parallel_do.h:456

References tbb::internal::first(), tbb::internal::last(), and tbb::interface9::internal::select_parallel_do().

Here is the call graph for this function:

◆ parallel_do() [5/6]

template<typename Range , typename Body >
void tbb::parallel_do ( Range &  rng,
const Body &  body,
task_group_context context 
)

Definition at line 534 of file parallel_do.h.

534  {
535  parallel_do(tbb::internal::first(rng), tbb::internal::last(rng), body, context);
536 }
auto first(Container &c) -> decltype(begin(c))
auto last(Container &c) -> decltype(begin(c))
void parallel_do(const Range &rng, const Body &body, task_group_context &context)
Definition: parallel_do.h:539

References tbb::internal::first(), tbb::internal::last(), and tbb::parallel_do().

Here is the call graph for this function:

◆ parallel_do() [6/6]

template<typename Range , typename Body >
void tbb::parallel_do ( const Range &  rng,
const Body &  body,
task_group_context context 
)

Definition at line 539 of file parallel_do.h.

539  {
540  parallel_do(tbb::internal::first(rng), tbb::internal::last(rng), body, context);
541 }
auto first(Container &c) -> decltype(begin(c))
auto last(Container &c) -> decltype(begin(c))
void parallel_do(const Range &rng, const Body &body, task_group_context &context)
Definition: parallel_do.h:539

References tbb::internal::first(), tbb::internal::last(), and tbb::parallel_do().

Here is the call graph for this function:

◆ parallel_for() [1/15]

template<typename Range , typename Body >
void tbb::serial::interface9::parallel_for ( const Range &  range,
const Body &  body 
)

Parallel iteration over range with default partitioner.

Definition at line 101 of file serial/tbb/parallel_for.h.

101  {
102  serial::interface9::start_for<Range,Body,const __TBB_DEFAULT_PARTITIONER>::run(range,body,__TBB_DEFAULT_PARTITIONER());
103 }
#define __TBB_DEFAULT_PARTITIONER
Definition: tbb_config.h:597

References __TBB_DEFAULT_PARTITIONER, and tbb::serial::interface9::start_for< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_for() [2/15]

template<typename Range , typename Body >
void tbb::serial::interface9::parallel_for ( const Range &  range,
const Body &  body,
const simple_partitioner partitioner 
)

Parallel iteration over range with simple partitioner.

Definition at line 108 of file serial/tbb/parallel_for.h.

108  {
109  serial::interface9::start_for<Range,Body,const simple_partitioner>::run(range,body,partitioner);
110 }

References tbb::serial::interface9::start_for< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_for() [3/15]

template<typename Range , typename Body >
void tbb::serial::interface9::parallel_for ( const Range &  range,
const Body &  body,
const auto_partitioner partitioner 
)

Parallel iteration over range with auto_partitioner.

Definition at line 115 of file serial/tbb/parallel_for.h.

115  {
116  serial::interface9::start_for<Range,Body,const auto_partitioner>::run(range,body,partitioner);
117 }

References tbb::serial::interface9::start_for< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_for() [4/15]

template<typename Range , typename Body >
void tbb::serial::interface9::parallel_for ( const Range &  range,
const Body &  body,
const static_partitioner partitioner 
)

Parallel iteration over range with static_partitioner.

Definition at line 122 of file serial/tbb/parallel_for.h.

122  {
123  serial::interface9::start_for<Range,Body,const static_partitioner>::run(range,body,partitioner);
124 }

References tbb::serial::interface9::start_for< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_for() [5/15]

template<typename Range , typename Body >
void tbb::serial::interface9::parallel_for ( const Range &  range,
const Body &  body,
affinity_partitioner partitioner 
)

Parallel iteration over range with affinity_partitioner.

Definition at line 129 of file serial/tbb/parallel_for.h.

129  {
130  serial::interface9::start_for<Range,Body,affinity_partitioner>::run(range,body,partitioner);
131 }

References tbb::serial::interface9::start_for< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_for() [6/15]

template<typename Range , typename Body >
void tbb::parallel_for ( const Range &  range,
const Body &  body 
)

Parallel iteration over range with default partitioner.

Definition at line 201 of file tbb/parallel_for.h.

201  {
202  internal::start_for<Range,Body,const __TBB_DEFAULT_PARTITIONER>::run(range,body,__TBB_DEFAULT_PARTITIONER());
203 }
#define __TBB_DEFAULT_PARTITIONER
Definition: tbb_config.h:597

References __TBB_DEFAULT_PARTITIONER, and tbb::interface9::internal::start_for< Range, Body, Partitioner >::run().

Referenced by tbb::internal::parallel_for_each_impl< Iterator, Function, std::random_access_iterator_tag >::doit(), tbb::strict_ppl::parallel_for_impl(), and tbb::interface9::internal::parallel_quick_sort().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ parallel_for() [7/15]

template<typename Range , typename Body >
void tbb::parallel_for ( const Range &  range,
const Body &  body,
const simple_partitioner partitioner 
)

Parallel iteration over range with simple partitioner.

Definition at line 208 of file tbb/parallel_for.h.

208  {
209  internal::start_for<Range,Body,const simple_partitioner>::run(range,body,partitioner);
210 }

References tbb::interface9::internal::start_for< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_for() [8/15]

template<typename Range , typename Body >
void tbb::parallel_for ( const Range &  range,
const Body &  body,
const auto_partitioner partitioner 
)

Parallel iteration over range with auto_partitioner.

Definition at line 215 of file tbb/parallel_for.h.

215  {
216  internal::start_for<Range,Body,const auto_partitioner>::run(range,body,partitioner);
217 }

References tbb::interface9::internal::start_for< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_for() [9/15]

template<typename Range , typename Body >
void tbb::parallel_for ( const Range &  range,
const Body &  body,
const static_partitioner partitioner 
)

Parallel iteration over range with static_partitioner.

Definition at line 222 of file tbb/parallel_for.h.

222  {
223  internal::start_for<Range,Body,const static_partitioner>::run(range,body,partitioner);
224 }

References tbb::interface9::internal::start_for< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_for() [10/15]

template<typename Range , typename Body >
void tbb::parallel_for ( const Range &  range,
const Body &  body,
affinity_partitioner partitioner 
)

Parallel iteration over range with affinity_partitioner.

Definition at line 229 of file tbb/parallel_for.h.

229  {
230  internal::start_for<Range,Body,affinity_partitioner>::run(range,body,partitioner);
231 }

References tbb::interface9::internal::start_for< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_for() [11/15]

template<typename Range , typename Body >
void tbb::parallel_for ( const Range &  range,
const Body &  body,
task_group_context context 
)

Parallel iteration over range with default partitioner and user-supplied context.

Definition at line 237 of file tbb/parallel_for.h.

237  {
238  internal::start_for<Range,Body,const __TBB_DEFAULT_PARTITIONER>::run(range, body, __TBB_DEFAULT_PARTITIONER(), context);
239 }
#define __TBB_DEFAULT_PARTITIONER
Definition: tbb_config.h:597

References __TBB_DEFAULT_PARTITIONER, and tbb::interface9::internal::start_for< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_for() [12/15]

template<typename Range , typename Body >
void tbb::parallel_for ( const Range &  range,
const Body &  body,
const simple_partitioner partitioner,
task_group_context context 
)

Parallel iteration over range with simple partitioner and user-supplied context.

Definition at line 244 of file tbb/parallel_for.h.

244  {
245  internal::start_for<Range,Body,const simple_partitioner>::run(range, body, partitioner, context);
246 }

References tbb::interface9::internal::start_for< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_for() [13/15]

template<typename Range , typename Body >
void tbb::parallel_for ( const Range &  range,
const Body &  body,
const auto_partitioner partitioner,
task_group_context context 
)

Parallel iteration over range with auto_partitioner and user-supplied context.

Definition at line 251 of file tbb/parallel_for.h.

251  {
252  internal::start_for<Range,Body,const auto_partitioner>::run(range, body, partitioner, context);
253 }

References tbb::interface9::internal::start_for< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_for() [14/15]

template<typename Range , typename Body >
void tbb::parallel_for ( const Range &  range,
const Body &  body,
const static_partitioner partitioner,
task_group_context context 
)

Parallel iteration over range with static_partitioner and user-supplied context.

Definition at line 258 of file tbb/parallel_for.h.

258  {
259  internal::start_for<Range,Body,const static_partitioner>::run(range, body, partitioner, context);
260 }

References tbb::interface9::internal::start_for< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_for() [15/15]

template<typename Range , typename Body >
void tbb::parallel_for ( const Range &  range,
const Body &  body,
affinity_partitioner partitioner,
task_group_context context 
)

Parallel iteration over range with affinity_partitioner and user-supplied context.

Definition at line 265 of file tbb/parallel_for.h.

265  {
266  internal::start_for<Range,Body,affinity_partitioner>::run(range,body,partitioner, context);
267 }

References tbb::interface9::internal::start_for< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_for_each() [1/6]

template<typename Iterator , typename Function >
void tbb::parallel_for_each ( Iterator  first,
Iterator  last,
const Function &  f,
task_group_context context 
)

Calls function f for all items from [first, last) interval using user-supplied context.

Definition at line 96 of file parallel_for_each.h.

96  {
97  internal::parallel_for_each_impl<Iterator, Function, typename std::iterator_traits<Iterator>::iterator_category>::doit(first, last, f, context);
98 }
auto first(Container &c) -> decltype(begin(c))
auto last(Container &c) -> decltype(begin(c))

References tbb::internal::first(), and tbb::internal::last().

Referenced by tbb::parallel_for_each().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ parallel_for_each() [2/6]

template<typename Range , typename Function >
void tbb::parallel_for_each ( Range &  rng,
const Function &  f,
task_group_context context 
)

Calls function f for all items from rng using user-supplied context.

Definition at line 103 of file parallel_for_each.h.

103  {
105 }
void parallel_for_each(const Range &rng, const Function &f)
Uses default context.
auto first(Container &c) -> decltype(begin(c))
auto last(Container &c) -> decltype(begin(c))

References tbb::internal::first(), tbb::internal::last(), and tbb::parallel_for_each().

Here is the call graph for this function:

◆ parallel_for_each() [3/6]

template<typename Range , typename Function >
void tbb::parallel_for_each ( const Range &  rng,
const Function &  f,
task_group_context context 
)

Calls function f for all items from const rng user-supplied context.

Definition at line 110 of file parallel_for_each.h.

110  {
112 }
void parallel_for_each(const Range &rng, const Function &f)
Uses default context.
auto first(Container &c) -> decltype(begin(c))
auto last(Container &c) -> decltype(begin(c))

References tbb::internal::first(), tbb::internal::last(), and tbb::parallel_for_each().

Here is the call graph for this function:

◆ parallel_for_each() [4/6]

template<typename Iterator , typename Function >
void tbb::parallel_for_each ( Iterator  first,
Iterator  last,
const Function &  f 
)

Uses default context.

Definition at line 117 of file parallel_for_each.h.

117  {
118  internal::parallel_for_each_impl<Iterator, Function, typename std::iterator_traits<Iterator>::iterator_category>::doit(first, last, f);
119 }
auto first(Container &c) -> decltype(begin(c))
auto last(Container &c) -> decltype(begin(c))

References tbb::internal::first(), and tbb::internal::last().

Here is the call graph for this function:

◆ parallel_for_each() [5/6]

template<typename Range , typename Function >
void tbb::parallel_for_each ( Range &  rng,
const Function &  f 
)

Uses default context.

Definition at line 123 of file parallel_for_each.h.

123  {
125 }
void parallel_for_each(const Range &rng, const Function &f)
Uses default context.
auto first(Container &c) -> decltype(begin(c))
auto last(Container &c) -> decltype(begin(c))

References tbb::internal::first(), tbb::internal::last(), and tbb::parallel_for_each().

Here is the call graph for this function:

◆ parallel_for_each() [6/6]

template<typename Range , typename Function >
void tbb::parallel_for_each ( const Range &  rng,
const Function &  f 
)

Uses default context.

Definition at line 129 of file parallel_for_each.h.

129  {
131 }
void parallel_for_each(const Range &rng, const Function &f)
Uses default context.
auto first(Container &c) -> decltype(begin(c))
auto last(Container &c) -> decltype(begin(c))

References tbb::internal::first(), tbb::internal::last(), and tbb::parallel_for_each().

Here is the call graph for this function:

◆ parallel_invoke() [1/18]

template<typename F0 , typename F1 >
void tbb::parallel_invoke ( const F0 &  f0,
const F1 &  f1,
tbb::task_group_context context 
)

Executes a list of tasks in parallel and waits for all tasks to complete.

Definition at line 258 of file parallel_invoke.h.

258  {
259  internal::parallel_invoke_cleaner cleaner(2, context);
260  internal::parallel_invoke_helper& root = cleaner.root;
261 
262  root.add_children(f1);
263 
264  root.run_and_finish(f0);
265 }

◆ parallel_invoke() [2/18]

template<typename F0 , typename F1 , typename F2 >
void tbb::parallel_invoke ( const F0 &  f0,
const F1 &  f1,
const F2 &  f2,
tbb::task_group_context context 
)

Definition at line 269 of file parallel_invoke.h.

269  {
270  internal::parallel_invoke_cleaner cleaner(3, context);
271  internal::parallel_invoke_helper& root = cleaner.root;
272 
273  root.add_children(f2);
274  root.add_children(f1);
275 
276  root.run_and_finish(f0);
277 }

◆ parallel_invoke() [3/18]

template<typename F0 , typename F1 , typename F2 , typename F3 >
void tbb::parallel_invoke ( const F0 &  f0,
const F1 &  f1,
const F2 &  f2,
const F3 &  f3,
tbb::task_group_context context 
)

Definition at line 281 of file parallel_invoke.h.

283 {
284  internal::parallel_invoke_cleaner cleaner(4, context);
285  internal::parallel_invoke_helper& root = cleaner.root;
286 
287  root.add_children(f3);
288  root.add_children(f2);
289  root.add_children(f1);
290 
291  root.run_and_finish(f0);
292 }

◆ parallel_invoke() [4/18]

template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 >
void tbb::parallel_invoke ( const F0 &  f0,
const F1 &  f1,
const F2 &  f2,
const F3 &  f3,
const F4 &  f4,
tbb::task_group_context context 
)

Definition at line 296 of file parallel_invoke.h.

298 {
299  internal::parallel_invoke_cleaner cleaner(3, context);
300  internal::parallel_invoke_helper& root = cleaner.root;
301 
302  root.add_children(f4, f3);
303  root.add_children(f2, f1);
304 
305  root.run_and_finish(f0);
306 }

◆ parallel_invoke() [5/18]

template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 >
void tbb::parallel_invoke ( const F0 &  f0,
const F1 &  f1,
const F2 &  f2,
const F3 &  f3,
const F4 &  f4,
const F5 &  f5,
tbb::task_group_context context 
)

Definition at line 310 of file parallel_invoke.h.

312 {
313  internal::parallel_invoke_cleaner cleaner(3, context);
314  internal::parallel_invoke_helper& root = cleaner.root;
315 
316  root.add_children(f5, f4, f3);
317  root.add_children(f2, f1);
318 
319  root.run_and_finish(f0);
320 }

◆ parallel_invoke() [6/18]

template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 >
void tbb::parallel_invoke ( const F0 &  f0,
const F1 &  f1,
const F2 &  f2,
const F3 &  f3,
const F4 &  f4,
const F5 &  f5,
const F6 &  f6,
tbb::task_group_context context 
)

Definition at line 324 of file parallel_invoke.h.

327 {
328  internal::parallel_invoke_cleaner cleaner(3, context);
329  internal::parallel_invoke_helper& root = cleaner.root;
330 
331  root.add_children(f6, f5, f4);
332  root.add_children(f3, f2, f1);
333 
334  root.run_and_finish(f0);
335 }

◆ parallel_invoke() [7/18]

template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 >
void tbb::parallel_invoke ( const F0 &  f0,
const F1 &  f1,
const F2 &  f2,
const F3 &  f3,
const F4 &  f4,
const F5 &  f5,
const F6 &  f6,
const F7 &  f7,
tbb::task_group_context context 
)

Definition at line 340 of file parallel_invoke.h.

343 {
344  internal::parallel_invoke_cleaner cleaner(4, context);
345  internal::parallel_invoke_helper& root = cleaner.root;
346 
347  root.add_children(f7, f6, f5);
348  root.add_children(f4, f3);
349  root.add_children(f2, f1);
350 
351  root.run_and_finish(f0);
352 }

◆ parallel_invoke() [8/18]

template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 , typename F8 >
void tbb::parallel_invoke ( const F0 &  f0,
const F1 &  f1,
const F2 &  f2,
const F3 &  f3,
const F4 &  f4,
const F5 &  f5,
const F6 &  f6,
const F7 &  f7,
const F8 &  f8,
tbb::task_group_context context 
)

Definition at line 357 of file parallel_invoke.h.

360 {
361  internal::parallel_invoke_cleaner cleaner(4, context);
362  internal::parallel_invoke_helper& root = cleaner.root;
363 
364  root.add_children(f8, f7, f6);
365  root.add_children(f5, f4, f3);
366  root.add_children(f2, f1);
367 
368  root.run_and_finish(f0);
369 }

◆ parallel_invoke() [9/18]

template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 , typename F8 , typename F9 >
void tbb::parallel_invoke ( const F0 &  f0,
const F1 &  f1,
const F2 &  f2,
const F3 &  f3,
const F4 &  f4,
const F5 &  f5,
const F6 &  f6,
const F7 &  f7,
const F8 &  f8,
const F9 &  f9,
tbb::task_group_context context 
)

Definition at line 374 of file parallel_invoke.h.

377 {
378  internal::parallel_invoke_cleaner cleaner(4, context);
379  internal::parallel_invoke_helper& root = cleaner.root;
380 
381  root.add_children(f9, f8, f7);
382  root.add_children(f6, f5, f4);
383  root.add_children(f3, f2, f1);
384 
385  root.run_and_finish(f0);
386 }

◆ parallel_invoke() [10/18]

template<typename F0 , typename F1 >
void tbb::parallel_invoke ( const F0 &  f0,
const F1 &  f1 
)

Definition at line 390 of file parallel_invoke.h.

390  {
391  task_group_context context(internal::PARALLEL_INVOKE);
392  parallel_invoke<F0, F1>(f0, f1, context);
393 }

◆ parallel_invoke() [11/18]

template<typename F0 , typename F1 , typename F2 >
void tbb::parallel_invoke ( const F0 &  f0,
const F1 &  f1,
const F2 &  f2 
)

Definition at line 396 of file parallel_invoke.h.

396  {
397  task_group_context context(internal::PARALLEL_INVOKE);
398  parallel_invoke<F0, F1, F2>(f0, f1, f2, context);
399 }

◆ parallel_invoke() [12/18]

template<typename F0 , typename F1 , typename F2 , typename F3 >
void tbb::parallel_invoke ( const F0 &  f0,
const F1 &  f1,
const F2 &  f2,
const F3 &  f3 
)

Definition at line 402 of file parallel_invoke.h.

402  {
403  task_group_context context(internal::PARALLEL_INVOKE);
404  parallel_invoke<F0, F1, F2, F3>(f0, f1, f2, f3, context);
405 }

◆ parallel_invoke() [13/18]

template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 >
void tbb::parallel_invoke ( const F0 &  f0,
const F1 &  f1,
const F2 &  f2,
const F3 &  f3,
const F4 &  f4 
)

Definition at line 408 of file parallel_invoke.h.

408  {
409  task_group_context context(internal::PARALLEL_INVOKE);
410  parallel_invoke<F0, F1, F2, F3, F4>(f0, f1, f2, f3, f4, context);
411 }

◆ parallel_invoke() [14/18]

template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 >
void tbb::parallel_invoke ( const F0 &  f0,
const F1 &  f1,
const F2 &  f2,
const F3 &  f3,
const F4 &  f4,
const F5 &  f5 
)

Definition at line 414 of file parallel_invoke.h.

414  {
415  task_group_context context(internal::PARALLEL_INVOKE);
416  parallel_invoke<F0, F1, F2, F3, F4, F5>(f0, f1, f2, f3, f4, f5, context);
417 }

◆ parallel_invoke() [15/18]

template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 >
void tbb::parallel_invoke ( const F0 &  f0,
const F1 &  f1,
const F2 &  f2,
const F3 &  f3,
const F4 &  f4,
const F5 &  f5,
const F6 &  f6 
)

Definition at line 420 of file parallel_invoke.h.

422 {
423  task_group_context context(internal::PARALLEL_INVOKE);
424  parallel_invoke<F0, F1, F2, F3, F4, F5, F6>(f0, f1, f2, f3, f4, f5, f6, context);
425 }

◆ parallel_invoke() [16/18]

template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 >
void tbb::parallel_invoke ( const F0 &  f0,
const F1 &  f1,
const F2 &  f2,
const F3 &  f3,
const F4 &  f4,
const F5 &  f5,
const F6 &  f6,
const F7 &  f7 
)

Definition at line 429 of file parallel_invoke.h.

431 {
432  task_group_context context(internal::PARALLEL_INVOKE);
433  parallel_invoke<F0, F1, F2, F3, F4, F5, F6, F7>(f0, f1, f2, f3, f4, f5, f6, f7, context);
434 }

◆ parallel_invoke() [17/18]

template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 , typename F8 >
void tbb::parallel_invoke ( const F0 &  f0,
const F1 &  f1,
const F2 &  f2,
const F3 &  f3,
const F4 &  f4,
const F5 &  f5,
const F6 &  f6,
const F7 &  f7,
const F8 &  f8 
)

Definition at line 438 of file parallel_invoke.h.

440 {
441  task_group_context context(internal::PARALLEL_INVOKE);
442  parallel_invoke<F0, F1, F2, F3, F4, F5, F6, F7, F8>(f0, f1, f2, f3, f4, f5, f6, f7, f8, context);
443 }

◆ parallel_invoke() [18/18]

template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 , typename F8 , typename F9 >
void tbb::parallel_invoke ( const F0 &  f0,
const F1 &  f1,
const F2 &  f2,
const F3 &  f3,
const F4 &  f4,
const F5 &  f5,
const F6 &  f6,
const F7 &  f7,
const F8 &  f8,
const F9 &  f9 
)

Definition at line 447 of file parallel_invoke.h.

449 {
450  task_group_context context(internal::PARALLEL_INVOKE);
451  parallel_invoke<F0, F1, F2, F3, F4, F5, F6, F7, F8, F9>(f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, context);
452 }

◆ parallel_quick_sort()

template<typename RandomAccessIterator , typename Compare >
void tbb::interface9::internal::parallel_quick_sort ( RandomAccessIterator  begin,
RandomAccessIterator  end,
const Compare &  comp 
)

Wrapper method to initiate the sort by calling parallel_for.

Definition at line 163 of file parallel_sort.h.

163  {
164 #if __TBB_TASK_GROUP_CONTEXT
165  task_group_context my_context(PARALLEL_SORT);
166  const int serial_cutoff = 9;
167 
168  __TBB_ASSERT( begin + serial_cutoff < end, "min_parallel_size is smaller than serial cutoff?" );
169  RandomAccessIterator k = begin;
170  for ( ; k != begin + serial_cutoff; ++k ) {
171  if ( comp( *(k+1), *k ) ) {
172  goto do_parallel_quick_sort;
173  }
174  }
175 
176  parallel_for( blocked_range<RandomAccessIterator>(k+1, end),
177  quick_sort_pretest_body<RandomAccessIterator,Compare>(comp),
178  auto_partitioner(),
179  my_context);
180 
181  if (my_context.is_group_execution_cancelled())
182 do_parallel_quick_sort:
183 #endif /* __TBB_TASK_GROUP_CONTEXT */
184  parallel_for( quick_sort_range<RandomAccessIterator,Compare>(begin, end-begin, comp ),
185  quick_sort_body<RandomAccessIterator,Compare>(),
186  auto_partitioner() );
187 }
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 void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp end
#define __TBB_ASSERT(predicate, comment)
No-op version of __TBB_ASSERT.
Definition: tbb_stddef.h:169
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 void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp begin
void parallel_for(const Range &range, const Body &body)
Parallel iteration over range with default partitioner.

References __TBB_ASSERT, begin, end, tbb::task_group_context::is_group_execution_cancelled(), and tbb::parallel_for().

Referenced by tbb::parallel_sort().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ parallel_reduce() [1/20]

template<typename Range , typename Body >
void tbb::parallel_reduce ( const Range &  range,
Body &  body 
)

Parallel iteration with reduction and default partitioner.

Definition at line 363 of file parallel_reduce.h.

363  {
364  internal::start_reduce<Range,Body, const __TBB_DEFAULT_PARTITIONER>::run( range, body, __TBB_DEFAULT_PARTITIONER() );
365 }
#define __TBB_DEFAULT_PARTITIONER
Definition: tbb_config.h:597

References __TBB_DEFAULT_PARTITIONER, and tbb::interface9::internal::start_reduce< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_reduce() [2/20]

template<typename Range , typename Body >
void tbb::parallel_reduce ( const Range &  range,
Body &  body,
const simple_partitioner partitioner 
)

Parallel iteration with reduction and simple_partitioner.

Definition at line 370 of file parallel_reduce.h.

370  {
371  internal::start_reduce<Range,Body,const simple_partitioner>::run( range, body, partitioner );
372 }

References tbb::interface9::internal::start_reduce< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_reduce() [3/20]

template<typename Range , typename Body >
void tbb::parallel_reduce ( const Range &  range,
Body &  body,
const auto_partitioner partitioner 
)

Parallel iteration with reduction and auto_partitioner.

Definition at line 377 of file parallel_reduce.h.

377  {
378  internal::start_reduce<Range,Body,const auto_partitioner>::run( range, body, partitioner );
379 }

References tbb::interface9::internal::start_reduce< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_reduce() [4/20]

template<typename Range , typename Body >
void tbb::parallel_reduce ( const Range &  range,
Body &  body,
const static_partitioner partitioner 
)

Parallel iteration with reduction and static_partitioner.

Definition at line 384 of file parallel_reduce.h.

384  {
385  internal::start_reduce<Range,Body,const static_partitioner>::run( range, body, partitioner );
386 }

References tbb::interface9::internal::start_reduce< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_reduce() [5/20]

template<typename Range , typename Body >
void tbb::parallel_reduce ( const Range &  range,
Body &  body,
affinity_partitioner partitioner 
)

Parallel iteration with reduction and affinity_partitioner.

Definition at line 391 of file parallel_reduce.h.

391  {
392  internal::start_reduce<Range,Body,affinity_partitioner>::run( range, body, partitioner );
393 }

References tbb::interface9::internal::start_reduce< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_reduce() [6/20]

template<typename Range , typename Body >
void tbb::parallel_reduce ( const Range &  range,
Body &  body,
task_group_context context 
)

Parallel iteration with reduction, default partitioner and user-supplied context.

Definition at line 399 of file parallel_reduce.h.

399  {
400  internal::start_reduce<Range,Body,const __TBB_DEFAULT_PARTITIONER>::run( range, body, __TBB_DEFAULT_PARTITIONER(), context );
401 }
#define __TBB_DEFAULT_PARTITIONER
Definition: tbb_config.h:597

References __TBB_DEFAULT_PARTITIONER, and tbb::interface9::internal::start_reduce< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_reduce() [7/20]

template<typename Range , typename Body >
void tbb::parallel_reduce ( const Range &  range,
Body &  body,
const simple_partitioner partitioner,
task_group_context context 
)

Parallel iteration with reduction, simple partitioner and user-supplied context.

Definition at line 406 of file parallel_reduce.h.

406  {
407  internal::start_reduce<Range,Body,const simple_partitioner>::run( range, body, partitioner, context );
408 }

References tbb::interface9::internal::start_reduce< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_reduce() [8/20]

template<typename Range , typename Body >
void tbb::parallel_reduce ( const Range &  range,
Body &  body,
const auto_partitioner partitioner,
task_group_context context 
)

Parallel iteration with reduction, auto_partitioner and user-supplied context.

Definition at line 413 of file parallel_reduce.h.

413  {
414  internal::start_reduce<Range,Body,const auto_partitioner>::run( range, body, partitioner, context );
415 }

References tbb::interface9::internal::start_reduce< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_reduce() [9/20]

template<typename Range , typename Body >
void tbb::parallel_reduce ( const Range &  range,
Body &  body,
const static_partitioner partitioner,
task_group_context context 
)

Parallel iteration with reduction, static_partitioner and user-supplied context.

Definition at line 420 of file parallel_reduce.h.

420  {
421  internal::start_reduce<Range,Body,const static_partitioner>::run( range, body, partitioner, context );
422 }

References tbb::interface9::internal::start_reduce< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_reduce() [10/20]

template<typename Range , typename Body >
void tbb::parallel_reduce ( const Range &  range,
Body &  body,
affinity_partitioner partitioner,
task_group_context context 
)

Parallel iteration with reduction, affinity_partitioner and user-supplied context.

Definition at line 427 of file parallel_reduce.h.

427  {
428  internal::start_reduce<Range,Body,affinity_partitioner>::run( range, body, partitioner, context );
429 }

References tbb::interface9::internal::start_reduce< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_reduce() [11/20]

template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_reduce ( const Range &  range,
const Value &  identity,
const RealBody &  real_body,
const Reduction &  reduction 
)

Parallel iteration with reduction and default partitioner.

parallel_reduce overloads that work with anonymous function objects (see also requirements on parallel_reduce anonymous function objects).

Definition at line 438 of file parallel_reduce.h.

438  {
439  internal::lambda_reduce_body<Range,Value,RealBody,Reduction> body(identity, real_body, reduction);
440  internal::start_reduce<Range,internal::lambda_reduce_body<Range,Value,RealBody,Reduction>,const __TBB_DEFAULT_PARTITIONER>
441  ::run(range, body, __TBB_DEFAULT_PARTITIONER() );
442  return body.result();
443 }
#define __TBB_DEFAULT_PARTITIONER
Definition: tbb_config.h:597

References __TBB_DEFAULT_PARTITIONER.

◆ parallel_reduce() [12/20]

template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_reduce ( const Range &  range,
const Value &  identity,
const RealBody &  real_body,
const Reduction &  reduction,
const simple_partitioner partitioner 
)

Parallel iteration with reduction and simple_partitioner.

Definition at line 448 of file parallel_reduce.h.

449  {
450  internal::lambda_reduce_body<Range,Value,RealBody,Reduction> body(identity, real_body, reduction);
451  internal::start_reduce<Range,internal::lambda_reduce_body<Range,Value,RealBody,Reduction>,const simple_partitioner>
452  ::run(range, body, partitioner );
453  return body.result();
454 }

◆ parallel_reduce() [13/20]

template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_reduce ( const Range &  range,
const Value &  identity,
const RealBody &  real_body,
const Reduction &  reduction,
const auto_partitioner partitioner 
)

Parallel iteration with reduction and auto_partitioner.

Definition at line 459 of file parallel_reduce.h.

460  {
461  internal::lambda_reduce_body<Range,Value,RealBody,Reduction> body(identity, real_body, reduction);
462  internal::start_reduce<Range,internal::lambda_reduce_body<Range,Value,RealBody,Reduction>,const auto_partitioner>
463  ::run( range, body, partitioner );
464  return body.result();
465 }

◆ parallel_reduce() [14/20]

template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_reduce ( const Range &  range,
const Value &  identity,
const RealBody &  real_body,
const Reduction &  reduction,
const static_partitioner partitioner 
)

Parallel iteration with reduction and static_partitioner.

Definition at line 470 of file parallel_reduce.h.

471  {
472  internal::lambda_reduce_body<Range,Value,RealBody,Reduction> body(identity, real_body, reduction);
473  internal::start_reduce<Range,internal::lambda_reduce_body<Range,Value,RealBody,Reduction>,const static_partitioner>
474  ::run( range, body, partitioner );
475  return body.result();
476 }

◆ parallel_reduce() [15/20]

template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_reduce ( const Range &  range,
const Value &  identity,
const RealBody &  real_body,
const Reduction &  reduction,
affinity_partitioner partitioner 
)

Parallel iteration with reduction and affinity_partitioner.

Definition at line 481 of file parallel_reduce.h.

482  {
483  internal::lambda_reduce_body<Range,Value,RealBody,Reduction> body(identity, real_body, reduction);
484  internal::start_reduce<Range,internal::lambda_reduce_body<Range,Value,RealBody,Reduction>,affinity_partitioner>
485  ::run( range, body, partitioner );
486  return body.result();
487 }

◆ parallel_reduce() [16/20]

template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_reduce ( const Range &  range,
const Value &  identity,
const RealBody &  real_body,
const Reduction &  reduction,
task_group_context context 
)

Parallel iteration with reduction, default partitioner and user-supplied context.

Definition at line 493 of file parallel_reduce.h.

494  {
495  internal::lambda_reduce_body<Range,Value,RealBody,Reduction> body(identity, real_body, reduction);
496  internal::start_reduce<Range,internal::lambda_reduce_body<Range,Value,RealBody,Reduction>,const __TBB_DEFAULT_PARTITIONER>
497  ::run( range, body, __TBB_DEFAULT_PARTITIONER(), context );
498  return body.result();
499 }
#define __TBB_DEFAULT_PARTITIONER
Definition: tbb_config.h:597

References __TBB_DEFAULT_PARTITIONER.

◆ parallel_reduce() [17/20]

template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_reduce ( const Range &  range,
const Value &  identity,
const RealBody &  real_body,
const Reduction &  reduction,
const simple_partitioner partitioner,
task_group_context context 
)

Parallel iteration with reduction, simple partitioner and user-supplied context.

Definition at line 504 of file parallel_reduce.h.

505  {
506  internal::lambda_reduce_body<Range,Value,RealBody,Reduction> body(identity, real_body, reduction);
507  internal::start_reduce<Range,internal::lambda_reduce_body<Range,Value,RealBody,Reduction>,const simple_partitioner>
508  ::run( range, body, partitioner, context );
509  return body.result();
510 }

◆ parallel_reduce() [18/20]

template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_reduce ( const Range &  range,
const Value &  identity,
const RealBody &  real_body,
const Reduction &  reduction,
const auto_partitioner partitioner,
task_group_context context 
)

Parallel iteration with reduction, auto_partitioner and user-supplied context.

Definition at line 515 of file parallel_reduce.h.

516  {
517  internal::lambda_reduce_body<Range,Value,RealBody,Reduction> body(identity, real_body, reduction);
518  internal::start_reduce<Range,internal::lambda_reduce_body<Range,Value,RealBody,Reduction>,const auto_partitioner>
519  ::run( range, body, partitioner, context );
520  return body.result();
521 }

◆ parallel_reduce() [19/20]

template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_reduce ( const Range &  range,
const Value &  identity,
const RealBody &  real_body,
const Reduction &  reduction,
const static_partitioner partitioner,
task_group_context context 
)

Parallel iteration with reduction, static_partitioner and user-supplied context.

Definition at line 526 of file parallel_reduce.h.

527  {
528  internal::lambda_reduce_body<Range,Value,RealBody,Reduction> body(identity, real_body, reduction);
529  internal::start_reduce<Range,internal::lambda_reduce_body<Range,Value,RealBody,Reduction>,const static_partitioner>
530  ::run( range, body, partitioner, context );
531  return body.result();
532 }

◆ parallel_reduce() [20/20]

template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_reduce ( const Range &  range,
const Value &  identity,
const RealBody &  real_body,
const Reduction &  reduction,
affinity_partitioner partitioner,
task_group_context context 
)

Parallel iteration with reduction, affinity_partitioner and user-supplied context.

Definition at line 537 of file parallel_reduce.h.

538  {
539  internal::lambda_reduce_body<Range,Value,RealBody,Reduction> body(identity, real_body, reduction);
540  internal::start_reduce<Range,internal::lambda_reduce_body<Range,Value,RealBody,Reduction>,affinity_partitioner>
541  ::run( range, body, partitioner, context );
542  return body.result();
543 }

◆ parallel_scan() [1/6]

template<typename Range , typename Body >
void tbb::parallel_scan ( const Range &  range,
Body &  body 
)

Parallel prefix with default partitioner.

Definition at line 364 of file parallel_scan.h.

364  {
365  internal::start_scan<Range,Body,__TBB_DEFAULT_PARTITIONER>::run(range,body,__TBB_DEFAULT_PARTITIONER());
366 }
#define __TBB_DEFAULT_PARTITIONER
Definition: tbb_config.h:597

References __TBB_DEFAULT_PARTITIONER, and tbb::internal::start_scan< Range, Body, Partitioner >::run().

Referenced by tbb::parallel_scan().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ parallel_scan() [2/6]

template<typename Range , typename Body >
void tbb::parallel_scan ( const Range &  range,
Body &  body,
const simple_partitioner partitioner 
)

Parallel prefix with simple_partitioner.

Definition at line 371 of file parallel_scan.h.

371  {
372  internal::start_scan<Range,Body,simple_partitioner>::run(range,body,partitioner);
373 }

References tbb::internal::start_scan< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_scan() [3/6]

template<typename Range , typename Body >
void tbb::parallel_scan ( const Range &  range,
Body &  body,
const auto_partitioner partitioner 
)

Parallel prefix with auto_partitioner.

Definition at line 378 of file parallel_scan.h.

378  {
379  internal::start_scan<Range,Body,auto_partitioner>::run(range,body,partitioner);
380 }

References tbb::internal::start_scan< Range, Body, Partitioner >::run().

Here is the call graph for this function:

◆ parallel_scan() [4/6]

template<typename Range , typename Value , typename Scan , typename ReverseJoin >
Value tbb::parallel_scan ( const Range &  range,
const Value &  identity,
const Scan &  scan,
const ReverseJoin &  reverse_join 
)

Parallel prefix with default partitioner.

Definition at line 385 of file parallel_scan.h.

385  {
386  internal::lambda_scan_body<Range, Value, Scan, ReverseJoin> body(identity, scan, reverse_join);
388  return body.result();
389 }
void parallel_scan(const Range &range, Body &body)
Parallel prefix with default partitioner.
#define __TBB_DEFAULT_PARTITIONER
Definition: tbb_config.h:597

References __TBB_DEFAULT_PARTITIONER, and tbb::parallel_scan().

Here is the call graph for this function:

◆ parallel_scan() [5/6]

template<typename Range , typename Value , typename Scan , typename ReverseJoin >
Value tbb::parallel_scan ( const Range &  range,
const Value &  identity,
const Scan &  scan,
const ReverseJoin &  reverse_join,
const simple_partitioner partitioner 
)

Parallel prefix with simple_partitioner.

Definition at line 394 of file parallel_scan.h.

394  {
395  internal::lambda_scan_body<Range, Value, Scan, ReverseJoin> body(identity, scan, reverse_join);
396  tbb::parallel_scan(range,body,partitioner);
397  return body.result();
398 }
void parallel_scan(const Range &range, Body &body)
Parallel prefix with default partitioner.

References tbb::parallel_scan().

Here is the call graph for this function:

◆ parallel_scan() [6/6]

template<typename Range , typename Value , typename Scan , typename ReverseJoin >
Value tbb::parallel_scan ( const Range &  range,
const Value &  identity,
const Scan &  scan,
const ReverseJoin &  reverse_join,
const auto_partitioner partitioner 
)

Parallel prefix with auto_partitioner.

Definition at line 403 of file parallel_scan.h.

403  {
404  internal::lambda_scan_body<Range, Value, Scan, ReverseJoin> body(identity, scan, reverse_join);
405  tbb::parallel_scan(range,body,partitioner);
406  return body.result();
407 }
void parallel_scan(const Range &range, Body &body)
Parallel prefix with default partitioner.

References tbb::parallel_scan().

Here is the call graph for this function:

◆ parallel_sort() [1/5]

template<typename RandomAccessIterator , typename Compare >
void tbb::parallel_sort ( RandomAccessIterator  begin,
RandomAccessIterator  end,
const Compare &  comp 
)

Sorts the data in [begin,end) using the given comparator.

The compare function object is used for all comparisons between elements during sorting. The compare object must define a bool operator() function.

Definition at line 211 of file parallel_sort.h.

211  {
212  const int min_parallel_size = 500;
213  if( end > begin ) {
214  if (end - begin < min_parallel_size) {
215  std::sort(begin, end, comp);
216  } else {
218  }
219  }
220 }
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 void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp end
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 void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp begin
void parallel_quick_sort(RandomAccessIterator begin, RandomAccessIterator end, const Compare &comp)
Wrapper method to initiate the sort by calling parallel_for.

References begin, end, and tbb::interface9::internal::parallel_quick_sort().

Referenced by tbb::parallel_sort().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ parallel_sort() [2/5]

template<typename RandomAccessIterator >
void tbb::parallel_sort ( RandomAccessIterator  begin,
RandomAccessIterator  end 
)
inline

Sorts the data in [begin,end) with a default comparator std::less<RandomAccessIterator>

Definition at line 225 of file parallel_sort.h.

225  {
226  parallel_sort( begin, end, std::less< typename std::iterator_traits<RandomAccessIterator>::value_type >() );
227 }
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 void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp end
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 void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp begin
void parallel_sort(T *begin, T *end)
Sorts the data in the range [begin,end) with a default comparator std::less<T>

References begin, end, and tbb::parallel_sort().

Here is the call graph for this function:

◆ parallel_sort() [3/5]

template<typename Range , typename Compare >
void tbb::parallel_sort ( Range &  rng,
const Compare &  comp 
)

Sorts the data in rng using the given comparator.

Definition at line 232 of file parallel_sort.h.

232  {
234 }
auto first(Container &c) -> decltype(begin(c))
void parallel_sort(T *begin, T *end)
Sorts the data in the range [begin,end) with a default comparator std::less<T>
auto last(Container &c) -> decltype(begin(c))

References tbb::internal::first(), tbb::internal::last(), and tbb::parallel_sort().

Here is the call graph for this function:

◆ parallel_sort() [4/5]

template<typename Range >
void tbb::parallel_sort ( Range &  rng)

Sorts the data in rng with a default comparator std::less<RandomAccessIterator>

Definition at line 239 of file parallel_sort.h.

239  {
241 }
auto first(Container &c) -> decltype(begin(c))
void parallel_sort(T *begin, T *end)
Sorts the data in the range [begin,end) with a default comparator std::less<T>
auto last(Container &c) -> decltype(begin(c))

References tbb::internal::first(), tbb::internal::last(), and tbb::parallel_sort().

Here is the call graph for this function:

◆ parallel_sort() [5/5]

template<typename T >
void tbb::parallel_sort ( T *  begin,
T *  end 
)
inline

Sorts the data in the range [begin,end) with a default comparator std::less<T>

Definition at line 246 of file parallel_sort.h.

246  {
247  parallel_sort( begin, end, std::less< T >() );
248 }
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 void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp end
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 void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp begin
void parallel_sort(T *begin, T *end)
Sorts the data in the range [begin,end) with a default comparator std::less<T>

References begin, end, and tbb::parallel_sort().

Here is the call graph for this function:

◆ run_parallel_do()

template<typename Iterator , typename Body , typename Item >
void tbb::interface9::internal::run_parallel_do ( Iterator  first,
Iterator  last,
const Body &  body,
task_group_context context 
)

For internal use only.

Implements parallel iteration over a range.

Definition at line 415 of file parallel_do.h.

420  {
421  typedef do_task_iter<Iterator, Body, Item> root_iteration_task;
422 #if __TBB_TASK_GROUP_CONTEXT
423  parallel_do_feeder_impl<Body, Item> feeder(context);
424 #else
425  parallel_do_feeder_impl<Body, Item> feeder;
426 #endif
427  feeder.my_body = &body;
428 
429  root_iteration_task &t = *new( feeder.my_barrier->allocate_child() ) root_iteration_task(first, last, feeder);
430 
431  feeder.my_barrier->set_ref_count(2);
432  feeder.my_barrier->spawn_and_wait_for_all(t);
433  }
auto first(Container &c) -> decltype(begin(c))
auto last(Container &c) -> decltype(begin(c))

References tbb::internal::first(), tbb::internal::last(), tbb::interface9::internal::parallel_do_feeder_impl< Body, Item >::my_barrier, and tbb::interface9::internal::parallel_do_feeder_impl< Body, Item >::my_body.

Here is the call graph for this function:

◆ select_parallel_do() [1/2]

template<typename Iterator , typename Body , typename Item >
void tbb::interface9::internal::select_parallel_do ( Iterator  first,
Iterator  last,
const Body &  body,
void(Body::*)(Item) const  ,
task_group_context context 
)

For internal use only.

Detects types of Body's operator function arguments.

Definition at line 439 of file parallel_do.h.

444  {
446 #if __TBB_TASK_GROUP_CONTEXT
447  , context
448 #endif
449  );
450  }
auto first(Container &c) -> decltype(begin(c))
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 void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle __itt_metadata_type type
auto last(Container &c) -> decltype(begin(c))

References tbb::internal::first(), tbb::internal::last(), and type.

Referenced by tbb::parallel_do().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ select_parallel_do() [2/2]

template<typename Iterator , typename Body , typename Item , typename _Item >
void tbb::interface9::internal::select_parallel_do ( Iterator  first,
Iterator  last,
const Body &  body,
void(Body::*)(Item, parallel_do_feeder< _Item > &) const  ,
task_group_context context 
)

For internal use only.

Detects types of Body's operator function arguments.

Definition at line 456 of file parallel_do.h.

461  {
463 #if __TBB_TASK_GROUP_CONTEXT
464  , context
465 #endif
466  );
467  }
auto first(Container &c) -> decltype(begin(c))
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 void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle __itt_metadata_type type
auto last(Container &c) -> decltype(begin(c))

References tbb::internal::first(), tbb::internal::last(), and type.

Here is the call graph for this function:

Copyright © 2005-2019 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.