Visible to Intel only — GUID: GUID-0F4DBA01-9A83-41CC-93B2-22F73640D903
Package Contents
Parallelizing Simple Loops
Parallelizing Complex Loops
Parallelizing Data Flow and Dependence Graphs
Work Isolation
Exceptions and Cancellation
Floating-point Settings
Containers
Mutual Exclusion
Timing
Memory Allocation
The Task Scheduler
Design Patterns
Migrating from Threading Building Blocks (TBB)
Constrained APIs
Appendix A Costs of Time Slicing
Appendix B Mixing With Other Threading Packages
References
parallel_for_each Body semantics and requirements
parallel_sort ranges interface extension
TBB_malloc_replacement_log Function
Type-specified message keys for join_node
Scalable Memory Pools
Helper Functions for Expressing Graphs
concurrent_lru_cache
task_group extensions
The customizing mutex type for concurrent_hash_map
Visible to Intel only — GUID: GUID-0F4DBA01-9A83-41CC-93B2-22F73640D903
Constrained APIs
Starting from C++20, most of Intel® oneAPI Threading Building Blocks (oneTBB) APIs are constrained to enforce named requirements on template arguments types.
The violations of these requirements are detected at a compile time during the template instantiation.
Example
// Call for body(oneapi::tbb::blocked_range) is ill-formed // oneapi::tbb::parallel_for call results in constraint failure auto body = [](const int& r) { /*...*/ }; oneapi::tbb::parallel_for(oneapi::tbb::blocked_range{1, 10}, body); // Error example: // error: no matching function to call to oneapi::tbb::parallel_for // note: constraints not satisfied // note: the required expression 'body(range)' is invalid body(range);
CAUTION:
The code that violates named requirements but compiles successfully until C++20, may not compile in C++20 mode due to early and strict constraints diagnostics.