On Windows* and Linux* operating systems, it is possible to automatically replace all calls to standard functions for dynamic memory allocation (such as malloc) with the Intel® Threading Building Blocks (Intel® TBB) scalable equivalents. Doing so can sometimes improve application performance.
This section provides some common parallel programming patterns and how to implement them in Intel® Threading Building Blocks (Intel® TBB).
The description of each pattern has the following format:
Problem – describes the problem to be solved.
Context – describes contexts in which the problem arises.
Forces . considerations that drive use of the pattern.
Intel® Threading Building Blocks (Intel® TBB) can be mixed with other threading packages. No special effort is required to use any part of Intel® TBB with other threading packages.
Here is an example that parallelizes an outer loop with OpenMP and an inner loop with Intel® Threading Building Blocks.
SummaryTemplate class for a recursively divisible half-open interval.
template<typename Value> class blocked_range;
SummaryParallel variant of std::for_each.
template<typename InputIterator, typename Func> void parallel_for_each (InputIterator first, InputIterator last, const Func& f
These operations affect an entire table. Do not concurrently invoke them on the same table.
Types const_range_type and range_type model the Container Range concept. The types differ only in that the bounds for a const_range_type are of type const_iterator, whereas the bounds for a range_type are of type iterator.
A template class that is a graph_node, continue_receiver and a sender<T>. It executes a specified body object when triggered and broadcasts the generated value to all of its successors.
A template function that removes an edge between a sender<T> and a receiver<T>.