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::split
| Dummy type that distinguishes splitting constructor from copy constructor. More...

## Functions

template<typename Range , typename Body >
__TBB_DEPRECATED_VERBOSE 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 >
__TBB_DEPRECATED_VERBOSE 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 >
__TBB_DEPRECATED_VERBOSE 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 >
__TBB_DEPRECATED_VERBOSE 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 >
__TBB_DEPRECATED_VERBOSE 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...
class | tbb::__TBB_DEPRECATED_MSG ("tbb::pipeline is deprecated, use tbb::parallel_pipeline") pipeline
| A processing pipeline that applies filters to items. 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

## __TBB_DEPRECATED_MSG()

class tbb::__TBB_DEPRECATED_MSG | ( | "tbb::pipeline is | deprecated,
|  | use tbb::parallel_pipeline" |
| ) |  |

A processing pipeline that applies filters to items.

Construct empty pipeline.

Though the current implementation declares the destructor virtual, do not rely on this detail. The virtualness is deprecated and may disappear in future versions of TBB.

Add filter to end of pipeline.

Run the pipeline to completion.

Run the pipeline to completion with user-supplied context.

Remove all filters from the pipeline.

Pointer to first filter in the pipeline.

Pointer to location where address of next filter to be added should be stored.

task who's reference count is used to determine when all stages are done.

Number of idle tokens waiting for input stage.

Global counter of tokens

False until fetch_input returns NULL.

True if the pipeline contains a thread-bound filter; false otherwise.

Remove filter from pipeline.

Not used, but retained to satisfy old export files.

Does clean up if pipeline is cancelled or exception occurred

Definition at line 235 of file pipeline.h.

{
public:
__TBB_EXPORTED_METHOD pipeline();
virtual __TBB_EXPORTED_METHOD ~pipeline();
void __TBB_EXPORTED_METHOD add_filter( filter& filter_ );
void __TBB_EXPORTED_METHOD run( size_t max_number_of_live_tokens );
#if __TBB_TASK_GROUP_CONTEXT
void __TBB_EXPORTED_METHOD run( size_t max_number_of_live_tokens, tbb::task_group_context& context );
#endif
void __TBB_EXPORTED_METHOD clear();
private:
friend class internal::stage_task;
friend class internal::pipeline_root_task;
friend class filter;
friend class thread_bound_filter;
friend class internal::pipeline_cleaner;
friend class tbb::interface6::internal::pipeline_proxy;
filter* filter_list;
filter* filter_end;
task* end_counter;
atomic<internal::Token> input_tokens;
atomic<internal::Token> token_counter;
bool end_of_input;
bool has_thread_bound_filters;
void remove_filter( filter& filter_ );
void __TBB_EXPORTED_METHOD inject_token( task& self );
#if __TBB_TASK_GROUP_CONTEXT
void clear_filters();
#endif
};

References __TBB_EXPORTED_METHOD.

## 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 548 of file parallel_reduce.h.

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

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 555 of file parallel_reduce.h.

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

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 simple_partitioner & | partitioner,
|  | task_group_context & | context
| ) |  |

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

Definition at line 577 of file parallel_reduce.h.

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

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,
|  | const static_partitioner & | partitioner
| ) |  |

Parallel iteration with deterministic reduction and static partitioner.

Definition at line 562 of file parallel_reduce.h.

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

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 static_partitioner & | partitioner,
|  | task_group_context & | context
| ) |  |

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

Definition at line 584 of file parallel_reduce.h.

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

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,
|  | task_group_context & | context
| ) |  |

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

Definition at line 570 of file parallel_reduce.h.

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

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 596 of file parallel_reduce.h.

{
return parallel_deterministic_reduce(range, identity, real_body, reduction, simple_partitioner());
}

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 603 of file parallel_reduce.h.

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

References tbb::internal::lambda_reduce_body< Range, Value, RealBody, Reduction >::result().

Here is the call graph for this function:

## 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 simple_partitioner & | partitioner,
|  | task_group_context & | context
| ) |  |

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

Definition at line 631 of file parallel_reduce.h.

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

References tbb::internal::lambda_reduce_body< Range, Value, RealBody, Reduction >::result().

Here is the call graph for this function:

## 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,
|  | const static_partitioner & | partitioner
| ) |  |

Parallel iteration with deterministic reduction and static partitioner.

Definition at line 613 of file parallel_reduce.h.

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

References tbb::internal::lambda_reduce_body< Range, Value, RealBody, Reduction >::result().

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 static_partitioner & | partitioner,
|  | task_group_context & | context
| ) |  |

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

Definition at line 642 of file parallel_reduce.h.

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

References tbb::internal::lambda_reduce_body< Range, Value, RealBody, Reduction >::result().

Here is the call graph for this function:

## 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,
|  | task_group_context & | context
| ) |  |

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

Definition at line 623 of file parallel_reduce.h.

{
return parallel_deterministic_reduce(range, identity, real_body, reduction, simple_partitioner(), context);
}

References tbb::parallel_deterministic_reduce().

Here is the call graph for this function:

## parallel_do() [1/6]

template<typename Range , typename Body >

void tbb::parallel_do | ( | const Range & | rng,
|  | const Body & | body
| ) |  |

Definition at line 517 of file parallel_do.h.

{
parallel_do(tbb::internal::first(rng), tbb::internal::last(rng), body);
}

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

Here is the call graph for this function:

## parallel_do() [2/6]

template<typename Range , typename Body >

void tbb::parallel_do | ( | const Range & | rng,
|  | const Body & | body,
|  | task_group_context & | context
| ) |  |

Definition at line 538 of file parallel_do.h.

{
parallel_do(tbb::internal::first(rng), tbb::internal::last(rng), body, context);
}

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 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 497 of file parallel_do.h.

{
if ( first == last )
return;
#if __TBB_TASK_GROUP_CONTEXT
task_group_context context(internal::PARALLEL_DO);
#endif
interface9::internal::select_parallel_do( first, last, body, &Body::operator()
#if __TBB_TASK_GROUP_CONTEXT
, context
#endif
);
}

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() [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 525 of file parallel_do.h.

{
if ( first == last )
return;
interface9::internal::select_parallel_do( first, last, body, &Body::operator(), context );
}

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
| ) |  |

Definition at line 512 of file parallel_do.h.

{
parallel_do(tbb::internal::first(rng), tbb::internal::last(rng), body);
}

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 | ( | Range & | rng,
|  | const Body & | body,
|  | task_group_context & | context
| ) |  |

Definition at line 533 of file parallel_do.h.

{
parallel_do(tbb::internal::first(rng), tbb::internal::last(rng), body, context);
}

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 >

__TBB_DEPRECATED_VERBOSE void tbb::serial::interface9::parallel_for | ( | const Range & | range,
|  | const Body & | body
| ) |  |

Parallel iteration over range with default partitioner.

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

{
serial::interface9::start_for<Range,Body,const __TBB_DEFAULT_PARTITIONER>::run(range,body,__TBB_DEFAULT_PARTITIONER());
}

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::parallel_for | ( | const Range & | range,
|  | const Body & | body
| ) |  |

Parallel iteration over range with default partitioner.

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

{
internal::start_for<Range,Body,const __TBB_DEFAULT_PARTITIONER>::run(range,body,__TBB_DEFAULT_PARTITIONER());
}

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() [3/15]

template<typename Range , typename Body >

__TBB_DEPRECATED_VERBOSE 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 136 of file serial/tbb/parallel_for.h.

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

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::parallel_for | ( | const Range & | range,
|  | const Body & | body,
|  | affinity_partitioner & | partitioner
| ) |  |

Parallel iteration over range with affinity_partitioner.

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

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

References tbb::interface9::internal::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::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 264 of file tbb/parallel_for.h.

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

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

Here is the call graph for this function:

## parallel_for() [6/15]

template<typename Range , typename Body >

__TBB_DEPRECATED_VERBOSE 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 122 of file serial/tbb/parallel_for.h.

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

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

Here is the call graph for this function:

## parallel_for() [7/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 214 of file tbb/parallel_for.h.

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

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,
|  | task_group_context & | context
| ) |  |

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

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

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

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 >

__TBB_DEPRECATED_VERBOSE 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 115 of file serial/tbb/parallel_for.h.

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

References tbb::serial::interface9::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,
|  | const simple_partitioner & | partitioner
| ) |  |

Parallel iteration over range with simple partitioner.

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

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

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,
|  | const simple_partitioner & | partitioner,
|  | task_group_context & | context
| ) |  |

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

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

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

References 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 >

__TBB_DEPRECATED_VERBOSE 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 129 of file serial/tbb/parallel_for.h.

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

References tbb::serial::interface9::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 static_partitioner & | partitioner
| ) |  |

Parallel iteration over range with static_partitioner.

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

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

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 257 of file tbb/parallel_for.h.

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

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,
|  | task_group_context & | context
| ) |  |

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

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

{
internal::start_for<Range,Body,const __TBB_DEFAULT_PARTITIONER>::run(range, body, __TBB_DEFAULT_PARTITIONER(), context);
}

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

Here is the call graph for this function:

## parallel_for_each() [1/6]

template<typename Range , typename Function >

void tbb::parallel_for_each | ( | const Range & | rng,
|  | const Function & | f
| ) |  |

Uses default context.

Definition at line 125 of file parallel_for_each.h.

{
parallel_for_each(tbb::internal::first(rng), tbb::internal::last(rng), f);
}

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

Here is the call graph for this function:

## parallel_for_each() [2/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 106 of file parallel_for_each.h.

{
parallel_for_each(tbb::internal::first(rng), tbb::internal::last(rng), f, context);
}

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 Iterator , typename Function >

void tbb::parallel_for_each | ( | Iterator | first,
|  | Iterator | last,
|  | const Function & | f
| ) |  |

Uses default context.

Definition at line 113 of file parallel_for_each.h.

{
internal::parallel_for_each_impl<Iterator, Function, typename std::iterator_traits<Iterator>::iterator_category>::doit(first, last, f);
}

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

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,
|  | task_group_context & | context
| ) |  |

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

Definition at line 92 of file parallel_for_each.h.

{
internal::parallel_for_each_impl<Iterator, Function, typename std::iterator_traits<Iterator>::iterator_category>::doit(first, last, f, context);
}

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() [5/6]

template<typename Range , typename Function >

void tbb::parallel_for_each | ( | Range & | rng,
|  | const Function & | f
| ) |  |

Uses default context.

Definition at line 119 of file parallel_for_each.h.

{
parallel_for_each(tbb::internal::first(rng), tbb::internal::last(rng), f);
}

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 | ( | Range & | rng,
|  | const Function & | f,
|  | task_group_context & | context
| ) |  |

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

Definition at line 99 of file parallel_for_each.h.

{
parallel_for_each(tbb::internal::first(rng), tbb::internal::last(rng), f, context);
}

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
| ) |  |

Definition at line 389 of file parallel_invoke.h.

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

## parallel_invoke() [2/18]

template<typename F0 , typename F1 , typename F2 >

void tbb::parallel_invoke | ( | const F0 & | f0,
|  | const F1 & | f1,
|  | const F2 & | f2
| ) |  |

Definition at line 395 of file parallel_invoke.h.

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

## 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
| ) |  |

Definition at line 401 of file parallel_invoke.h.

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

## 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
| ) |  |

Definition at line 407 of file parallel_invoke.h.

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

## 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
| ) |  |

Definition at line 413 of file parallel_invoke.h.

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

## 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
| ) |  |

Definition at line 419 of file parallel_invoke.h.

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

## 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
| ) |  |

Definition at line 428 of file parallel_invoke.h.

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

## 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
| ) |  |

Definition at line 437 of file parallel_invoke.h.

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

## 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
| ) |  |

Definition at line 446 of file parallel_invoke.h.

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

## parallel_invoke() [10/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 373 of file parallel_invoke.h.

{
internal::parallel_invoke_cleaner cleaner(4, context);
internal::parallel_invoke_helper& root = cleaner.root;
root.add_children(f9, f8, f7);
root.add_children(f6, f5, f4);
root.add_children(f3, f2, f1);
root.run_and_finish(f0);
}

References tbb::internal::parallel_invoke_helper::add_children(), tbb::internal::parallel_invoke_cleaner::root, and tbb::internal::parallel_invoke_helper::run_and_finish().

Here is the call graph for this function:

## parallel_invoke() [11/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 356 of file parallel_invoke.h.

{
internal::parallel_invoke_cleaner cleaner(4, context);
internal::parallel_invoke_helper& root = cleaner.root;
root.add_children(f8, f7, f6);
root.add_children(f5, f4, f3);
root.add_children(f2, f1);
root.run_and_finish(f0);
}

References tbb::internal::parallel_invoke_helper::add_children(), tbb::internal::parallel_invoke_cleaner::root, and tbb::internal::parallel_invoke_helper::run_and_finish().

Here is the call graph for this function:

## parallel_invoke() [12/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 339 of file parallel_invoke.h.

{
internal::parallel_invoke_cleaner cleaner(4, context);
internal::parallel_invoke_helper& root = cleaner.root;
root.add_children(f7, f6, f5);
root.add_children(f4, f3);
root.add_children(f2, f1);
root.run_and_finish(f0);
}

References tbb::internal::parallel_invoke_helper::add_children(), tbb::internal::parallel_invoke_cleaner::root, and tbb::internal::parallel_invoke_helper::run_and_finish().

Here is the call graph for this function:

## parallel_invoke() [13/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 323 of file parallel_invoke.h.

{
internal::parallel_invoke_cleaner cleaner(3, context);
internal::parallel_invoke_helper& root = cleaner.root;
root.add_children(f6, f5, f4);
root.add_children(f3, f2, f1);
root.run_and_finish(f0);
}

References tbb::internal::parallel_invoke_helper::add_children(), tbb::internal::parallel_invoke_cleaner::root, and tbb::internal::parallel_invoke_helper::run_and_finish().

Here is the call graph for this function:

## 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,
|  | tbb::task_group_context & | context
| ) |  |

Definition at line 309 of file parallel_invoke.h.

{
internal::parallel_invoke_cleaner cleaner(3, context);
internal::parallel_invoke_helper& root = cleaner.root;
root.add_children(f5, f4, f3);
root.add_children(f2, f1);
root.run_and_finish(f0);
}

References tbb::internal::parallel_invoke_helper::add_children(), tbb::internal::parallel_invoke_cleaner::root, and tbb::internal::parallel_invoke_helper::run_and_finish().

Here is the call graph for this function:

## parallel_invoke() [15/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 295 of file parallel_invoke.h.

{
internal::parallel_invoke_cleaner cleaner(3, context);
internal::parallel_invoke_helper& root = cleaner.root;
root.add_children(f4, f3);
root.add_children(f2, f1);
root.run_and_finish(f0);
}

References tbb::internal::parallel_invoke_helper::add_children(), tbb::internal::parallel_invoke_cleaner::root, and tbb::internal::parallel_invoke_helper::run_and_finish().

Here is the call graph for this function:

## parallel_invoke() [16/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 280 of file parallel_invoke.h.

{
internal::parallel_invoke_cleaner cleaner(4, context);
internal::parallel_invoke_helper& root = cleaner.root;
root.add_children(f3);
root.add_children(f2);
root.add_children(f1);
root.run_and_finish(f0);
}

References tbb::internal::parallel_invoke_helper::add_children(), tbb::internal::parallel_invoke_cleaner::root, and tbb::internal::parallel_invoke_helper::run_and_finish().

Here is the call graph for this function:

## parallel_invoke() [17/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 268 of file parallel_invoke.h.

{
internal::parallel_invoke_cleaner cleaner(3, context);
internal::parallel_invoke_helper& root = cleaner.root;
root.add_children(f2);
root.add_children(f1);
root.run_and_finish(f0);
}

References tbb::internal::parallel_invoke_helper::add_children(), tbb::internal::parallel_invoke_cleaner::root, and tbb::internal::parallel_invoke_helper::run_and_finish().

Here is the call graph for this function:

## parallel_invoke() [18/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 257 of file parallel_invoke.h.

{
internal::parallel_invoke_cleaner cleaner(2, context);
internal::parallel_invoke_helper& root = cleaner.root;
root.add_children(f1);
root.run_and_finish(f0);
}

References tbb::internal::parallel_invoke_helper::add_children(), tbb::internal::parallel_invoke_cleaner::root, and tbb::internal::parallel_invoke_helper::run_and_finish().

Here is the call graph for this function:

## 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 162 of file parallel_sort.h.

{
#if __TBB_TASK_GROUP_CONTEXT
task_group_context my_context(PARALLEL_SORT);
const int serial_cutoff = 9;
__TBB_ASSERT( begin + serial_cutoff < end, "min_parallel_size is smaller than serial cutoff?" );
RandomAccessIterator k = begin;
for ( ; k != begin + serial_cutoff; ++k ) {
if ( comp( *(k+1), *k ) ) {
goto do_parallel_quick_sort;
}
}
parallel_for( blocked_range<RandomAccessIterator>(k+1, end),
quick_sort_pretest_body<RandomAccessIterator,Compare>(comp),
auto_partitioner(),
my_context);
if (my_context.is_group_execution_cancelled())
do_parallel_quick_sort:
#endif /* __TBB_TASK_GROUP_CONTEXT */
parallel_for( quick_sort_range<RandomAccessIterator,Compare>(begin, end-begin, comp ),
quick_sort_body<RandomAccessIterator,Compare>(),
auto_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 362 of file parallel_reduce.h.

{
internal::start_reduce<Range,Body, const __TBB_DEFAULT_PARTITIONER>::run( range, body, __TBB_DEFAULT_PARTITIONER() );
}

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,
|  | affinity_partitioner & | partitioner
| ) |  |

Parallel iteration with reduction and affinity_partitioner.

Definition at line 390 of file parallel_reduce.h.

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

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,
|  | affinity_partitioner & | partitioner,
|  | task_group_context & | context
| ) |  |

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

Definition at line 426 of file parallel_reduce.h.

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

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 auto_partitioner & | partitioner
| ) |  |

Parallel iteration with reduction and auto_partitioner.

Definition at line 376 of file parallel_reduce.h.

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

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,
|  | const auto_partitioner & | partitioner,
|  | task_group_context & | context
| ) |  |

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

Definition at line 412 of file parallel_reduce.h.

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

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,
|  | const simple_partitioner & | partitioner
| ) |  |

Parallel iteration with reduction and simple_partitioner.

Definition at line 369 of file parallel_reduce.h.

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

References 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 405 of file parallel_reduce.h.

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

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 static_partitioner & | partitioner
| ) |  |

Parallel iteration with reduction and static_partitioner.

Definition at line 383 of file parallel_reduce.h.

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

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 419 of file parallel_reduce.h.

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

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,
|  | task_group_context & | context
| ) |  |

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

Definition at line 398 of file parallel_reduce.h.

{
internal::start_reduce<Range,Body,const __TBB_DEFAULT_PARTITIONER>::run( range, body, __TBB_DEFAULT_PARTITIONER(), context );
}

References __TBB_DEFAULT_PARTITIONER, and 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 437 of file parallel_reduce.h.

{
internal::lambda_reduce_body<Range,Value,RealBody,Reduction> body(identity, real_body, reduction);
internal::start_reduce<Range,internal::lambda_reduce_body<Range,Value,RealBody,Reduction>,const __TBB_DEFAULT_PARTITIONER>
::run(range, body, __TBB_DEFAULT_PARTITIONER() );
return body.result();
}

References __TBB_DEFAULT_PARTITIONER, and tbb::internal::lambda_reduce_body< Range, Value, RealBody, Reduction >::result().

Here is the call graph for this function:

## 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,
|  | affinity_partitioner & | partitioner
| ) |  |

Parallel iteration with reduction and affinity_partitioner.

Definition at line 480 of file parallel_reduce.h.

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

References tbb::internal::lambda_reduce_body< Range, Value, RealBody, Reduction >::result().

Here is the call graph for this function:

## 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,
|  | affinity_partitioner & | partitioner,
|  | task_group_context & | context
| ) |  |

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

Definition at line 536 of file parallel_reduce.h.

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

References tbb::internal::lambda_reduce_body< Range, Value, RealBody, Reduction >::result().

Here is the call graph for this function:

## 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 auto_partitioner & | partitioner
| ) |  |

Parallel iteration with reduction and auto_partitioner.

Definition at line 458 of file parallel_reduce.h.

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

References tbb::internal::lambda_reduce_body< Range, Value, RealBody, Reduction >::result().

Here is the call graph for this function:

## 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,
|  | const auto_partitioner & | partitioner,
|  | task_group_context & | context
| ) |  |

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

Definition at line 514 of file parallel_reduce.h.

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

References tbb::internal::lambda_reduce_body< Range, Value, RealBody, Reduction >::result().

Here is the call graph for this function:

## 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,
|  | const simple_partitioner & | partitioner
| ) |  |

Parallel iteration with reduction and simple_partitioner.

Definition at line 447 of file parallel_reduce.h.

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

References tbb::internal::lambda_reduce_body< Range, Value, RealBody, Reduction >::result().

Here is the call graph for this function:

## 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 503 of file parallel_reduce.h.

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

References tbb::internal::lambda_reduce_body< Range, Value, RealBody, Reduction >::result().

Here is the call graph for this function:

## 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 static_partitioner & | partitioner
| ) |  |

Parallel iteration with reduction and static_partitioner.

Definition at line 469 of file parallel_reduce.h.

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

References tbb::internal::lambda_reduce_body< Range, Value, RealBody, Reduction >::result().

Here is the call graph for this function:

## 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 525 of file parallel_reduce.h.

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

References tbb::internal::lambda_reduce_body< Range, Value, RealBody, Reduction >::result().

Here is the call graph for this function:

## 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,
|  | task_group_context & | context
| ) |  |

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

Definition at line 492 of file parallel_reduce.h.

{
internal::lambda_reduce_body<Range,Value,RealBody,Reduction> body(identity, real_body, reduction);
internal::start_reduce<Range,internal::lambda_reduce_body<Range,Value,RealBody,Reduction>,const __TBB_DEFAULT_PARTITIONER>
::run( range, body, __TBB_DEFAULT_PARTITIONER(), context );
return body.result();
}

References __TBB_DEFAULT_PARTITIONER, and tbb::internal::lambda_reduce_body< Range, Value, RealBody, Reduction >::result().

Here is the call graph for this function:

## 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 363 of file parallel_scan.h.

{
internal::start_scan<Range,Body,__TBB_DEFAULT_PARTITIONER>::run(range,body,__TBB_DEFAULT_PARTITIONER());
}

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 auto_partitioner & | partitioner
| ) |  |

Parallel prefix with auto_partitioner.

Definition at line 377 of file parallel_scan.h.

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

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 simple_partitioner & | partitioner
| ) |  |

Parallel prefix with simple_partitioner.

Definition at line 370 of file parallel_scan.h.

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

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 384 of file parallel_scan.h.

{
internal::lambda_scan_body<Range, Value, Scan, ReverseJoin> body(identity, scan, reverse_join);
tbb::parallel_scan(range,body,__TBB_DEFAULT_PARTITIONER());
return body.result();
}

References __TBB_DEFAULT_PARTITIONER, tbb::parallel_scan(), and tbb::internal::lambda_scan_body< Range, Value, Scan, ReverseJoin >::result().

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 auto_partitioner & | partitioner
| ) |  |

Parallel prefix with auto_partitioner.

Definition at line 402 of file parallel_scan.h.

{
internal::lambda_scan_body<Range, Value, Scan, ReverseJoin> body(identity, scan, reverse_join);
tbb::parallel_scan(range,body,partitioner);
return body.result();
}

References tbb::parallel_scan(), and tbb::internal::lambda_scan_body< Range, Value, Scan, ReverseJoin >::result().

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 simple_partitioner & | partitioner
| ) |  |

Parallel prefix with simple_partitioner.

Definition at line 393 of file parallel_scan.h.

{
internal::lambda_scan_body<Range, Value, Scan, ReverseJoin> body(identity, scan, reverse_join);
tbb::parallel_scan(range,body,partitioner);
return body.result();
}

References tbb::parallel_scan(), and tbb::internal::lambda_scan_body< Range, Value, Scan, ReverseJoin >::result().

Here is the call graph for this function:

## parallel_sort() [1/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 224 of file parallel_sort.h.

{
parallel_sort( begin, end, std::less< typename std::iterator_traits<RandomAccessIterator>::value_type >() );
}

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

Here is the call graph for this function:

## parallel_sort() [2/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 210 of file parallel_sort.h.

{
const int min_parallel_size = 500;
if( end > begin ) {
if (end - begin < min_parallel_size) {
std::sort(begin, end, comp);
} else {
interface9::internal::parallel_quick_sort(begin, end, comp);
}
}
}

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() [3/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 238 of file parallel_sort.h.

{
parallel_sort(tbb::internal::first(rng), tbb::internal::last(rng));
}

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 , typename Compare >

void tbb::parallel_sort | ( | Range & | rng,
|  | const Compare & | comp
| ) |  |

Sorts the data in rng using the given comparator.

Definition at line 231 of file parallel_sort.h.

{
parallel_sort(tbb::internal::first(rng), tbb::internal::last(rng), comp);
}

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 245 of file parallel_sort.h.

{
parallel_sort( begin, end, 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 414 of file parallel_do.h.

{
typedef do_task_iter<Iterator, Body, Item> root_iteration_task;
#if __TBB_TASK_GROUP_CONTEXT
parallel_do_feeder_impl<Body, Item> feeder(context);
#else
parallel_do_feeder_impl<Body, Item> feeder;
#endif
feeder.my_body = &body;
root_iteration_task &t = *new( feeder.my_barrier->allocate_child() ) root_iteration_task(first, last, feeder);
feeder.my_barrier->set_ref_count(2);
feeder.my_barrier->spawn_and_wait_for_all(t);
}

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 438 of file parallel_do.h.

{
run_parallel_do<Iterator, Body, typename ::tbb::internal::strip<Item>::type>( first, last, body
#if __TBB_TASK_GROUP_CONTEXT
, context
#endif
);
}

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 455 of file parallel_do.h.

{
run_parallel_do<Iterator, Body, typename ::tbb::internal::strip<Item>::type>( first, last, body
#if __TBB_TASK_GROUP_CONTEXT
, context
#endif
);
}

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

Here is the call graph for this function:
tbb::interface9::internal::start_for::run
static void run(const Range &range, const Body &body, Partitioner &partitioner)
Definition: tbb/parallel_for.h:83
tbb::interface9::internal::start_reduce::run
static void run(const Range &range, Body &body, Partitioner &partitioner)
Definition: parallel_reduce.h:131
tbb::interface9::internal::select_parallel_do
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:455
__TBB_DEFAULT_PARTITIONER
#define __TBB_DEFAULT_PARTITIONER
Definition: tbb_config.h:597
tbb::parallel_sort
void parallel_sort(T *begin, T *end)
Sorts the data in the range [begin,end) with a default comparator std::less<T>
Definition: parallel_sort.h:245
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 __itt_timestamp end
Definition: ittnotify_static.h:182
tbb::interface6::internal::pipeline_proxy
The class that represents an object of the pipeline for parallel_pipeline().
Definition: pipeline.h:508
__TBB_ASSERT
#define __TBB_ASSERT(predicate, comment)
No-op version of __TBB_ASSERT.
Definition: tbb_stddef.h:165
tbb::parallel_do
void parallel_do(const Range &rng, const Body &body, task_group_context &context)
Definition: parallel_do.h:538
tbb::parallel_deterministic_reduce
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.
Definition: parallel_reduce.h:642
tbb::parallel_scan
void parallel_scan(const Range &range, Body &body)
Parallel prefix with default partitioner.
Definition: parallel_scan.h:363
__TBB_TASK_GROUP_CONTEXT
#define __TBB_TASK_GROUP_CONTEXT
Definition: tbb_config.h:542
tbb::interface9::internal::start_deterministic_reduce::run
static void run(const Range &range, Body &body, Partitioner &partitioner)
Definition: parallel_reduce.h:246
tbb::task_group_context
Used to form groups of tasks.
Definition: task.h:347
begin
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
Definition: ittnotify_static.h:182
tbb::parallel_for_each
void parallel_for_each(const Range &rng, const Function &f)
Uses default context.
Definition: parallel_for_each.h:125
tbb::internal::first
auto first(Container &c) -> decltype(begin(c))
Definition: _range_iterator.h:34
task
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task * task
Definition: ittnotify_static.h:119
tbb::serial::interface9::parallel_for
__TBB_DEPRECATED_VERBOSE void parallel_for(const Range &range, const Body &body)
Parallel iteration over range with default partitioner.
Definition: serial/tbb/parallel_for.h:108
tbb::serial::interface9::start_for::run
static void run(const Range &range, const Body &body, Partitioner &partitioner)
Definition: serial/tbb/parallel_for.h:77
tbb::internal::start_scan::run
static void run(const Range &range_, Body &body_, const Partitioner &partitioner_)
Definition: parallel_scan.h:227
tbb::internal::last
auto last(Container &c) -> decltype(begin(c))
Definition: _range_iterator.h:40
__TBB_EXPORTED_METHOD
#define __TBB_EXPORTED_METHOD
Definition: tbb_stddef.h:98
type
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_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle __itt_metadata_type type
Definition: ittnotify_static.h:198
tbb::interface9::internal::parallel_quick_sort
void parallel_quick_sort(RandomAccessIterator begin, RandomAccessIterator end, const Compare &comp)
Wrapper method to initiate the sort by calling parallel_for.
Definition: parallel_sort.h:162

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

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

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