Threading Bulding Blocks (TBB) to biblioteka szablonów rozwijana przez firmę Intel w celu zaoferowania programistom C++ bardziej intuicyjnego podejścia do programowania równoległego i ułatwienia tworzenia oprogramowania wykorzystującego wielordzeniowe procesory. W jej skład wchodzą szablony algorytmów implementujące najczęściej stosowane schematy w programowaniu równoległym oraz szablony struktur danych zapewniające bezpieczne działanie w aplikacjach wielowątkowych. W bibliotece nie zabrakło również niskopoziomowych funkcji implementujących muteksy oraz operacje atomowe, chociaż użycia tych ostatnich przy umiejętnym stosowaniu oferowanych algorytmów można całkowicie uniknąć.
Zastosowanie w bibliotece programowania uogólnionego z szablonami umożliwia dostosowanie gotowych algorytmów do naszych potrzeb. Dodatkowo biblioteka odsuwa od programisty problemy związane z niskopoziomową obsługą wątków, oferując bardziej abstrakcyjne podejście do problemów. Zadanie programisty sprowadza się do zdefiniowania zadania oraz przestrzeni danych, na jakich operuje algorytm realizujący to zadanie. W najprostszym przypadku taką przestrzenią może być jednowymiarowa tablica liczb, a algorytm, jaki chcemy zastosować na danych, może np. służyć do policzenia, ile spośród tych liczb jest liczbami pierwszymi. Nie jesteśmy tutaj ograniczeni do reprezentowania przestrzeni danych przez typy wbudowane w język C++. Równie dobrze nasza przestrzeń może składać się ze zdefiniowanych przez nas obiektów.
Kluczową rolę w działaniu biblioteki odgrywa zaimplementowany w niej mechanizm planisty. W przeciwieństwie do metod zrównoleglenia, jakie oferuje OpenMP lub MPI, w których kontrola nad podziałem pracy na poszczególne wątki jak i ich ilość zależą w dużej mierze od programisty, tu zadanie to może w całości zostać przejęte przez bibliotekę. Mechanizm planisty sam zdecyduje, ile wątków utworzyć i jak pomiędzy nie rozdzielić obciążenie zadaniem obliczeniowym. Decyzja jest podejmowana po uwzględnieniu liczby rdzeni oraz ich obciążenia przez inne zadania systemowe. W znaczący sposób wpływa to na skalowalność programów z tego korzystających. 
Threading Bulding Blocks zostało stworzone, aby zrównoleglać zadania intensywne obliczeniowo. Biblioteka przy przydzielaniu rdzeni wątkom realizującym fragmenty zadania kieruje się zasadą, że w przypadku takiego rodzaju zadań optymalne jest uruchamianie jednego wątku na jednym rdzeniu. Zadania wykorzystujące np. operacje dyskowe nie nadają się najlepiej do tego, ponieważ wątek realizujący taką operację znaczną część swojego czasu spędza bezczynnie, oczekując na wczytanie lub zapis danych z wolniejszej pamięci dyskowej, a tym samym blokując zarezerwowany na to rdzeń. Należy o tym pamiętać przy tworzeniu zadań.
Prawdziwą przewagę TBB nad pokrewnymi technologiami widać w momencie, gdy program realizuje zadanie, którego czas wykonywania nie zależy w prosty sposób od ilości danych. W przypadku, gdy nie jesteśmy w stanie przewidzieć, jak długo będzie przetwarzana każda z części danych, najprostsze podejście podzielenia jej na równe fragmenty realizowane na oddzielnych rdzeniach zawodzi. Kosztowna obliczeniowo część danych będzie zajmować przeznaczony jej rdzeń nawet wtedy, gdy inne części zostały już przetworzone i zwolniły przeznaczone im zasoby. Planista TBB radzi sobie z tym, wykorzystując technikę „work stealing”, która polega na przenoszeniu części wykonywanych zadań (jeżeli tylko da się je podzielić) na bezczynne rdzenie. Dzięki temu mamy pewność, że wykorzystywane są wszystkie dostępne zasoby.
W końcu nic nie stoi na przeszkodzie, aby biblioteka ta mogła być zastosowana równocześnie z innymi technikami zrównoleglenia, jak OpenMP czy natywne wątki w systemie Windows.
