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.
The mutexes and locks here have relatively spartan interfaces that are designed for high performance. The interfaces enforce the scoped locking pattern, which is widely used in C++ libraries because:
The Intel® Threading Building Blocks (Intel® TBB) library approximates a portion of C++11 interfaces for condition variables and scoped locking. The approximation is based on the C++11 working draft N3000. The major differences are:
The implementation uses the tbb::tick_count interface instead of the C++11 <chrono> interface.
The value max_threads shall be one of the values in the table below.
Template class that processes work items.
This class is deprecated. Use parallel_do (4.7) instead.
The run-time loader is a mechanism that provides additional run-time control over the version of the Intel® Threading Building Blocks (Intel® TBB) dynamic library used by an application, plug-in, or another library.
speculative_spin_rw_mutex Class (Community Preview Feature)
Class that models ReaderWriterMutex Concept, and for processors which support hardware transactional memory (such as Intel® Transactional Synchronization Extensions (Intel® TSX)) may be implemented in a way that allows non-contending changes to the protected data to proceed in parallel.
The online version of the Intel® Threading Building Blocks (Intel® TBB) documentation integrates into the Microsoft Visual Studio* IDE help system.
In the Visual Studio IDE, you can browse and search for topics in different ways:
Suppose you want to apply a function Foo to each element of an array, and it is safe to process each element concurrently. Here is the sequential code to do this: