스레딩 빌딩 블록(Threading Building Blocks, 약칭 TBB)은 인텔(Intel)이 개발한 C++ 템플릿 라이브러리로, 멀티코어 프로세서 환경에서 병렬 프로그래밍을 단순화하고 효율적으로 수행할 수 있도록 설계된 소프트웨어 프레임워크이다. 현재는 oneAPI 이니셔티브의 일부로 Intel oneAPI Threading Building Blocks(oneTBB)라는 명칭으로 발전하였으며, UXL 재단(UXL Foundation)에서 오픈 소스로 관리되고 있다.
TBB의 핵심 설계 철학은 프로그래머가 직접 스레드를 생성하고 관리하는 대신, 논리적인 병렬성(logical parallelism)을 명세하면 런타임 라이브러리가 이를 물리적 스레드에 자동으로 매핑하는 방식이다. 이를 통해 개발자는 저수준의 스레드 관리에서 벗어나 알고리즘 자체에 집중할 수 있다.
주요 구성 요소는 다음과 같다. 기본 알고리즘으로는 parallel_for, parallel_reduce, parallel_scan이 제공되며, 고급 알고리즘으로 parallel_pipeline, parallel_sort 등이 포함된다. 동시성 컨테이너로는 concurrent_queue, concurrent_priority_queue, concurrent_vector, concurrent_hash_map 등이 있어 여러 스레드가 동시에 안전하게 데이터에 접근할 수 있도록 한다. 메모리 할당 측면에서는 scalable_malloc, scalable_allocator, cache_aligned_allocator 등을 통해 확장 가능한 메모리 관리를 지원한다. 상호 배제(mutual exclusion)를 위해 mutex, spin_mutex, queuing_mutex, spin_rw_mutex, queuing_rw_mutex 등 다양한 뮤텍스 클래스를 제공하며, atomic 연산을 위한 atomic 템플릿 클래스도 포함되어 있다. 또한 태스크 스케줄러(task scheduler)를 통해 태스크의 생성과 활성화를 직접 제어할 수 있는 저수준 인터페이스도 제공한다.
TBB는 작업 훔치기(work stealing) 기법을 사용하여 병렬 작업 부하를 프로세서 코어 간에 균형 있게 분배한다. 초기에는 작업이 모든 코어에 균등하게 분배되지만, 특정 코어가 작업을 먼저 완료하면 유휴 코어가 다른 바쁜 코어의 큐에서 작업을 가져와 실행하는 방식으로 코어 활용도를 극대화한다.
TBB는 2006년 8월 29일 버전 1.0이 처음 출시된 이후 지속적으로 발전해 왔다. 2021년 8월 릴리스(2021.8)가 안정화 버전으로 기록되어 있으며, 2023년 2월 17일 해당 버전이 갱신되었다. 라이선스는 상용 라이선스와 오픈 소스 라이선스(Apache License 2.0)의 이중 라이선스 체계로 제공된다.
지원 운영 체제로는 FreeBSD, 리눅스, 솔라리스, macOS, 마이크로소프트 윈도우, 안드로이드 등이 있으며, GCC, 비주얼 C++, 인텔 C++ 컴파일러 등 다양한 컴파일러와 호환된다. TBB는 다른 스레딩 패키지와도 공존이 가능하여, 기존 코드를 유지하면서 새로운 병렬 구현에 TBB를 적용할 수 있는 유연성을 제공한다.
TBB는 수치 기상 예측, 해양학, 천체물리학, 유전 공학, 지진 탐사, 인공지능 및 자동화, 에너지 자원 탐사, 사회경제학 등 다양한 계산 집약적 도메인에서 활용된다.