Threading Building Blocks
oneAPI Threading Building Blocks (oneTBB; formerly Threading Building Blocks or TBB), is a C++ template library developed by Intel for parallel programming on multi-core processors. Using TBB, a computation is broken down into tasks that can run in parallel. The library manages and schedules threads to execute these tasks.

Overview
A oneTBB program creates, synchronizes, and destroys graphs of dependent tasks according to algorithms, i.e. high-level parallel programming paradigms (a.k.a. Algorithmic Skeletons). Tasks are then executed respecting graph dependencies. This approach groups TBB in a family of techniques for parallel programming aiming to decouple the programming from the particulars of the underlying machine.

oneTBB implements work stealing to balance a parallel workload across available processing cores in order to increase core utilization and therefore scaling. Initially, the workload is evenly divided among the available processor cores. If one core completes its work while other cores still have a significant amount of work in their queue, oneTBB reassigns some of the work from one of the busy cores to the idle core. This dynamic capability decouples the programmer from the machine, allowing applications written using the library to scale to utilize the available processing cores with no changes to the source code or the executable program file. In a 2008 assessment of the work stealing implementation in TBB, researchers from Princeton University found that it was suboptimal for large numbers of processors cores, causing up to 47% of computing time spent in scheduling overhead when running certain benchmarks on a 32-core system.

oneTBB, like the STL (and the part of the C++ standard library based on it), uses templates extensively. This has the advantage of low-overhead polymorphism, since templates are a compile-time construct which modern C++ compilers can largely optimize away.

oneTBB is available commercially as a binary distribution with support, and as open-source software in both source and binary forms.

oneTBB does not provide guarantees of determinism or freedom from data races.

Library contents
oneTBB is a collection of components for parallel programming:
 Basic algorithms: parallel_for, parallel_reduce, parallel_scan
 Advanced algorithms: parallel_pipeline, parallel_sort
 Containers: concurrent_queue, concurrent_priority_queue, concurrent_vector, concurrent_hash_map
 Memory allocation: scalable_malloc, scalable_free, scalable_realloc, scalable_calloc, scalable_allocator, cache_aligned_allocator
 Mutual exclusion: mutex, spin_mutex, queuing_mutex, spin_rw_mutex, queuing_rw_mutex, recursive_mutex
 Timing: portable fine grained global time stamp
 Task scheduler: direct access to control the creation and activation of tasks

Systems supported
The hardware, operating system, and software prerequisites for oneTBB.

Supported Hardware
 Intel Celeron processor family
 Intel Core processor family
 Intel Xeon processor family
 Intel Xeon Phi processor family
 Intel Atom processor family
 Non-Intel processors compatible with the processors above

Supported Operating Systems

Systems with Microsoft Windows operating systems:
 Microsoft Windows 10
 Microsoft Windows Server 2016
 Microsoft Windows Server 2019

Systems with Linux* operating systems:
 Clear Linux
 Amazon Linux 2
 CentOS 8
 Debian 10
 Fedora 34
 Red Hat Enterprise Linux 7, 8
 SuSE Linux Enterprise Server 15
 Ubuntu 18.04 LTS, 20.04, 21.04

Systems with macOS operating systems:
 macOS 10.15, 11.x

Systems with Android operating systems:
 Android 9

Supported Compilers
 Intel oneAPI DPC++/C++ Compiler
 Intel C++ Compiler 19.0 and 19.1 version
 Microsoft Visual C++ 14.2 (Microsoft Visual Studio 2019, Windows OS only)
 GNU Compilers (gcc) 4.8.5 - 11.1.1
 GNU C Library (glibc) version 2.17 - 2.33
 Clang 6.0.0-12.0.0

See also
 Intel oneAPI Base Toolkit
 Intel Integrated Performance Primitives (IPP)
 Intel oneAPI Data Analytics Library (oneDAL)
 Intel oneAPI Math Kernel Library (oneMKL)
 Intel Advisor
 Intel Inspector
 Intel VTune Profiler
 Intel Concurrent Collections (CnC)
 Algorithmic skeleton
 Parallel computing
 List of C++ multi-threading libraries
 List of C++ template libraries
 Parallel Patterns Library
 Grand Central Dispatch (GCD)

Notes

References

External links
oneTBB Industry Specification

 at Intel

Concurrent programming libraries
Application programming interfaces
C++ programming language family
Generic programming
Threads (computing)
C++ libraries
Intel software