- Main Page
- Modules
- Namespaces
- Classes
- Files
- Related Pages

- Namespace List
- Namespace Members

# tbb Namespace Reference

The namespace tbb contains all components of the library. More...

## Classes
class | aligned_space
| Block of space aligned sufficiently to construct an array T with N elements. More...
struct | atomic
| Primary template for atomic. More...
struct | atomic< void * >
| Specialization for atomic<void*>, for sake of not allowing arithmetic or operator->. More...
class | blocked_range
| A range over which to iterate. More...
class | blocked_range2d
| A 2-dimensional range that models the Range concept. More...
class | blocked_range3d
| A 3-dimensional range that models the Range concept. More...
class | cache_aligned_allocator
| Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5. More...
class | cache_aligned_allocator< void >
| Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1. More...
class | combinable
| Thread-local storage with optional reduction. More...
struct | tbb_hash_compare
| hash_compare that is default argument for concurrent_hash_map More...
class | concurrent_bounded_queue
| A high-performance thread-safe blocking concurrent bounded queue. More...
class | tbb_hash
class | concurrent_vector
| Concurrent vector container. More...
class | graph_node
| The base of all graph nodes. Allows them to be stored in a collection for deletion. More...
class | continue_msg
| An empty class used for messages that mean "I'm done". More...
class | sender
| Pure virtual template class that defines a sender of messages of type T. More...
class | receiver
| Pure virtual template class that defines a receiver of messages of type T. More...
class | continue_receiver
| Base class for receivers of completion messages. More...
class | graph
| The graph class. More...
class | source_node
| An executable node that acts as a source, i.e. it has no predecessors. More...
class | function_node
| Implements a function node that supports Input -> Output. More...
class | executable_node
| Implements an executable node that supports continue_msg -> Output. More...
class | overwrite_node
class | write_once_node
class | continue_node
| Broadcasts completion message when it receives completion messages from all predecessors. Then resets. More...
class | broadcast_node
| Forwards messages of type T to all successors. More...
class | buffer_node
| Forwards messages in arbitrary order. More...
class | queue_node
| Forwards messages in FIFO order. More...
class | sequencer_node
| Forwards messages in sequence order. More...
class | priority_queue_node
| Forwards messages in priority order. More...
class | limiter_node
| Forwards messages only if the threshold has not been reached. More...
class | join_node
class | mutex
| Wrapper around the platform's native reader-writer lock. More...
class | null_mutex
| A mutex which does nothing. More...
class | null_rw_mutex
| A rw mutex which does nothing. More...
class | parallel_do_feeder
| Class the user supplied algorithm body uses to add new tasks. More...
struct | task_group_context
struct | pre_scan_tag
| Used to indicate that the initial scan is being performed. More...
struct | final_scan_tag
| Used to indicate that the final scan is being performed. More...
class | parallel_while
| Parallel iteration over a stream, with optional addition of more work. More...
class | simple_partitioner
| A simple partitioner. More...
class | auto_partitioner
| An auto partitioner. More...
class | affinity_partitioner
| An affinity partitioner. More...
class | filter
| A stage in a pipeline. More...
class | thread_bound_filter
| A stage in a pipeline served by a user thread. More...
class | pipeline
| A processing pipeline that applies filters to items. More...
class | queuing_mutex
| Queuing lock with local-only spinning. More...
class | queuing_rw_mutex
| Reader-writer lock with local-only spinning. More...
class | recursive_mutex
| Mutex that allows recursive mutex acquisition. More...
class | scalable_allocator
| Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5. More...
class | scalable_allocator< void >
| Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1. More...
class | spin_mutex
| A lock that occupies a single byte. More...
class | spin_rw_mutex_v3
| Fast, unfair, spinning reader-writer lock with backoff and writer-preference. More...
class | task
| Base class for user-defined tasks. More...
class | empty_task
| task that does nothing. Useful for synchronization. More...
class | task_list
| A list of children. More...
class | task_handle
class | task_group
class | structured_task_group
class | task_scheduler_init
| Class delimiting the scope of task scheduler activity. More...
class | tbb_allocator
| Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5. More...
class | tbb_allocator< void >
| Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1. More...
class | zero_allocator
| Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5. More...
class | zero_allocator< void, Allocator >
| Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1. More...
class | bad_last_alloc
| Exception for concurrent containers. More...
class | improper_lock
| Exception for PPL locks. More...
class | missing_wait
| Exception for missing wait on structured_task_group. More...
class | invalid_multiple_scheduling
| Exception for repeated scheduling of the same task_handle. More...
class | tbb_exception
| Interface to be implemented by all exceptions TBB recognizes and propagates across the threads. More...
class | captured_exception
| This class is used by TBB to propagate information about unhandled exceptions into the root thread. More...
class | movable_exception
| Template that can be used to implement exception that transfers arbitrary ExceptionData to the root thread. More...
class | split
| Dummy type that distinguishes splitting constructor from copy constructor. More...
class | tick_count
| Absolute timestamp. More...
## Namespaces
namespace | strict_ppl
| For internal use only.

## parallel_do
See also requirements on parallel_do Body.
template<typename Iterator, typename Body>
void | parallel_do (Iterator first, Iterator last, const Body &body)
| Parallel iteration over a range, with optional addition of more work.
template<typename Iterator, typename Body>
void | 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.
## parallel_for
See also requirements on Range and parallel_for Body.
template<typename Range, typename Body>
void | parallel_for (const Range &range, const Body &body)
| Parallel iteration over range with default partitioner.
template<typename Range, typename Body>
void | parallel_for (const Range &range, const Body &body, const simple_partitioner &partitioner)
| Parallel iteration over range with simple partitioner.
template<typename Range, typename Body>
void | parallel_for (const Range &range, const Body &body, const auto_partitioner &partitioner)
| Parallel iteration over range with auto_partitioner.
template<typename Range, typename Body>
void | parallel_for (const Range &range, const Body &body, affinity_partitioner &partitioner)
| Parallel iteration over range with affinity_partitioner.
template<typename Range, typename Body>
void | 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.
template<typename Range, typename Body>
void | 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.
template<typename Range, typename Body>
void | 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.
## parallel_for_each
template<typename InputIterator, typename Function>
void | parallel_for_each (InputIterator first, InputIterator last, const Function &f, task_group_context &context)
| Calls function f for all items from [first, last) interval using user-supplied context.
template<typename InputIterator, typename Function>
void | parallel_for_each (InputIterator first, InputIterator last, const Function &f)
| Uses default context.
## parallel_invoke
template<typename F0, typename F1>
void | 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.
template<typename F0, typename F1, typename F2>
void | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | parallel_invoke (const F0 &f0, const F1 &f1)
template<typename F0, typename F1, typename F2>
void | parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2)
template<typename F0, typename F1, typename F2, typename F3>
void | 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 | 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 | 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 | 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 | 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 | 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 | 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 | parallel_reduce (const Range &range, Body &body)
| Parallel iteration with reduction and default partitioner.
template<typename Range, typename Body>
void | parallel_reduce (const Range &range, Body &body, const simple_partitioner &partitioner)
| Parallel iteration with reduction and simple_partitioner.
template<typename Range, typename Body>
void | parallel_reduce (const Range &range, Body &body, const auto_partitioner &partitioner)
| Parallel iteration with reduction and auto_partitioner.
template<typename Range, typename Body>
void | parallel_reduce (const Range &range, Body &body, affinity_partitioner &partitioner)
| Parallel iteration with reduction and affinity_partitioner.
template<typename Range, typename Body>
void | 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.
template<typename Range, typename Body>
void | 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.
template<typename Range, typename Body>
void | parallel_reduce (const Range &range, Body &body, affinity_partitioner &partitioner, task_group_context &context)
| Parallel iteration with reduction, affinity_partitioner and user-supplied context.
template<typename Range, typename Value, typename RealBody, typename Reduction>
Value | parallel_reduce (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction)
| Parallel iteration with reduction and default partitioner.
template<typename Range, typename Value, typename RealBody, typename Reduction>
Value | 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.
template<typename Range, typename Value, typename RealBody, typename Reduction>
Value | 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.
template<typename Range, typename Value, typename RealBody, typename Reduction>
Value | 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.
template<typename Range, typename Value, typename RealBody, typename Reduction>
Value | 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.
template<typename Range, typename Value, typename RealBody, typename Reduction>
Value | 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.
template<typename Range, typename Value, typename RealBody, typename Reduction>
Value | 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.
## parallel_scan
See also requirements on Range and parallel_scan Body.
template<typename Range, typename Body>
void | parallel_scan (const Range &range, Body &body)
| Parallel prefix with default partitioner.
template<typename Range, typename Body>
void | parallel_scan (const Range &range, Body &body, const simple_partitioner &partitioner)
| Parallel prefix with simple_partitioner.
template<typename Range, typename Body>
void | parallel_scan (const Range &range, Body &body, const auto_partitioner &partitioner)
| Parallel prefix with auto_partitioner.
template<typename Range, typename Body>
void | parallel_scan (const Range &range, Body &body, const simple_partitioner &partitioner, tbb::task_group_context &context)
| Parallel prefix with simple_partitioner and user-supplied context.
template<typename Range, typename Body>
void | parallel_scan (const Range &range, Body &body, const auto_partitioner &partitioner, tbb::task_group_context &context)
| Parallel prefix with auto_partitioner and user-supplied context.
template<typename Range, typename Body>
void | parallel_scan (const Range &range, Body &body, tbb::task_group_context &context)
| Parallel prefix with default partitioner and user-supplied context.
## parallel_sort
See also requirements on iterators for parallel_sort.
template<typename RandomAccessIterator, typename Compare>
void | parallel_sort (RandomAccessIterator begin, RandomAccessIterator end, const Compare &comp)
| Sorts the data in [begin,end) using the given comparator.
template<typename RandomAccessIterator>
void | parallel_sort (RandomAccessIterator begin, RandomAccessIterator end)
| Sorts the data in [begin,end) with a default comparator `std::less<RandomAccessIterator>`.
template<typename T>
void | parallel_sort (T *begin, T *end)
| Sorts the data in the range ``[begin,end) with a default comparator `std::less<T>`.
## Typedefs
typedef internal::critical_section_v4 | critical_section
typedef spin_rw_mutex_v3 | spin_rw_mutex
typedef std::size_t | stack_size_type
typedef internal::task_scheduler_observer_v3 | task_scheduler_observer
typedef void(*) | assertion_handler_type (const char *filename, int line, const char *expression, const char *comment)
| Type for an assertion handler.
## Enumerations
enum | memory_semantics { __TBB_full_fence, acquire, release }
| Specifies memory fencing. More...
enum | ets_key_usage_type { ets_key_per_instance, ets_no_key }
| enum for selecting between single key and key-per-instance versions
enum | priority_t { priority_normal = internal::priority_stride_v4 * 2, priority_low = priority_normal - internal::priority_stride_v4, priority_high = priority_normal + internal::priority_stride_v4 }
enum | task_group_status { not_complete, complete, canceled }
## Functions
| __TBB_DECL_ATOMIC (__TBB_LONG_LONG) __TBB_DECL_ATOMIC(unsigned __TBB_LONG_LONG) __TBB_DECL_ATOMIC(long) __TBB_DECL_ATOMIC(unsigned long) __TBB_DECL_ATOMIC_ALT(unsigned
size_t | __TBB_DECL_ATOMIC_ALT (int, ptrdiff_t) __TBB_DECL_ATOMIC(unsigned) __TBB_DECL_ATOMIC(int) __TBB_DECL_ATOMIC(unsigned short) __TBB_DECL_ATOMIC(short) __TBB_DECL_ATOMIC(char) __TBB_DECL_ATOMIC(signed char) __TBB_DECL_ATOMIC(unsigned char) __TBB_DECL_ATOMIC(wchar_t) template< typename T > struct atomic< T * >
| Specialization for atomic<T*> with arithmetic and operator->.
template<typename T, typename U>
bool | operator== (const cache_aligned_allocator< T > &, const cache_aligned_allocator< U > &)
template<typename T, typename U>
bool | operator!= (const cache_aligned_allocator< T > &, const cache_aligned_allocator< U > &)
template<typename Key, typename T, typename HashCompare, typename A1, typename A2>
bool | operator== (const concurrent_hash_map< Key, T, HashCompare, A1 > &a, const concurrent_hash_map< Key, T, HashCompare, A2 > &b)
template<typename Key, typename T, typename HashCompare, typename A1, typename A2>
bool | operator!= (const concurrent_hash_map< Key, T, HashCompare, A1 > &a, const concurrent_hash_map< Key, T, HashCompare, A2 > &b)
template<typename Key, typename T, typename HashCompare, typename A>
void | swap (concurrent_hash_map< Key, T, HashCompare, A > &a, concurrent_hash_map< Key, T, HashCompare, A > &b)
template<typename T, class A1, class A2>
bool | operator== (const concurrent_vector< T, A1 > &a, const concurrent_vector< T, A2 > &b)
template<typename T, class A1, class A2>
bool | operator!= (const concurrent_vector< T, A1 > &a, const concurrent_vector< T, A2 > &b)
template<typename T, class A1, class A2>
bool | operator< (const concurrent_vector< T, A1 > &a, const concurrent_vector< T, A2 > &b)
template<typename T, class A1, class A2>
bool | operator> (const concurrent_vector< T, A1 > &a, const concurrent_vector< T, A2 > &b)
template<typename T, class A1, class A2>
bool | operator<= (const concurrent_vector< T, A1 > &a, const concurrent_vector< T, A2 > &b)
template<typename T, class A1, class A2>
bool | operator>= (const concurrent_vector< T, A1 > &a, const concurrent_vector< T, A2 > &b)
template<typename T, class A>
void | swap (concurrent_vector< T, A > &a, concurrent_vector< T, A > &b)
template<typename T>
void | make_edge (sender< T > &p, receiver< T > &s)
| Makes an edge between a single predecessor and a single successor.
template<typename T, typename SIterator>
void | make_edges (sender< T > &p, SIterator s_begin, SIterator s_end)
| Makes edges between a single predecessor and multiple successors.
template<typename T, typename PIterator>
void | make_edges (PIterator p_begin, PIterator p_end, receiver< T > &s)
| Makes edges between a set of predecessors and a single successor.
template<typename T, typename U>
bool | operator== (const scalable_allocator< T > &, const scalable_allocator< U > &)
template<typename T, typename U>
bool | operator!= (const scalable_allocator< T > &, const scalable_allocator< U > &)
bool | is_current_task_group_canceling ()
template<class F>
task_handle< F > | make_task (const F &f)
template<typename T, typename U>
bool | operator== (const tbb_allocator< T > &, const tbb_allocator< U > &)
template<typename T, typename U>
bool | operator!= (const tbb_allocator< T > &, const tbb_allocator< U > &)
template<typename T1, template< typename X1 > class B1, typename T2, template< typename X2 > class B2>
bool | operator== (const zero_allocator< T1, B1 > &a, const zero_allocator< T2, B2 > &b)
template<typename T1, template< typename X1 > class B1, typename T2, template< typename X2 > class B2>
bool | operator!= (const zero_allocator< T1, B1 > &a, const zero_allocator< T2, B2 > &b)
void | atomic_fence ()
| Sequentially consistent full memory fence.
assertion_handler_type __TBB_EXPORTED_FUNC | set_assertion_handler (assertion_handler_type new_handler)
| Set assertion handler and return previous value of it.
void __TBB_EXPORTED_FUNC | assertion_failure (const char *filename, int line, const char *expression, const char *comment)
| Process an assertion failure.
int __TBB_EXPORTED_FUNC | TBB_runtime_interface_version ()
| The function returns the interface version of the TBB shared library being used.
tick_count::interval_t | operator- (const tick_count &t1, const tick_count &t0)

## Detailed Description

The namespace tbb contains all components of the library.

## Enumeration Type Documentation

enum tbb::memory_semantics

Specifies memory fencing.

Enumerator:

  __TBB_full_fence | For internal use only.
  acquire | Acquire fence.
  release | Release fence.

## Function Documentation

void __TBB_EXPORTED_FUNC tbb::assertion_failure | ( | const char * | filename,
|  | int | line,
|  | const char * | expression,
|  | const char * | comment |
| ) |  |  |

Process an assertion failure.

Normally called from __TBB_ASSERT macro. If assertion handler is null, print message for assertion failure and abort. Otherwise call the assertion handler.

int __TBB_EXPORTED_FUNC tbb::TBB_runtime_interface_version | ( |  | ) |

The function returns the interface version of the TBB shared library being used.

The version it returns is determined at runtime, not at compile/link time. So it can be different than the value of TBB_INTERFACE_VERSION obtained at compile time.

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