<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://debianws.lexgopc.com/wiki143/index.php?action=history&amp;feed=atom&amp;title=Threading_Building_Blocks</id>
	<title>Threading Building Blocks - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://debianws.lexgopc.com/wiki143/index.php?action=history&amp;feed=atom&amp;title=Threading_Building_Blocks"/>
	<link rel="alternate" type="text/html" href="http://debianws.lexgopc.com/wiki143/index.php?title=Threading_Building_Blocks&amp;action=history"/>
	<updated>2026-10-26T04:26:22Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>http://debianws.lexgopc.com/wiki143/index.php?title=Threading_Building_Blocks&amp;diff=4815851&amp;oldid=prev</id>
		<title>imported&gt;Liz: Removing link(s) to &quot;Cryptography Primitives Library&quot;: Removing links to deleted page Cryptography Primitives Library.</title>
		<link rel="alternate" type="text/html" href="http://debianws.lexgopc.com/wiki143/index.php?title=Threading_Building_Blocks&amp;diff=4815851&amp;oldid=prev"/>
		<updated>2025-05-21T06:44:00Z</updated>

		<summary type="html">&lt;p&gt;Removing link(s) to &amp;quot;Cryptography Primitives Library&amp;quot;: Removing links to deleted page Cryptography Primitives Library.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{short description|C++ programming library}}&lt;br /&gt;
{{third-party|date=January 2016}}&lt;br /&gt;
{{Infobox software&lt;br /&gt;
| name = Threading Building Blocks&lt;br /&gt;
| logo = &lt;br /&gt;
| screenshot = &lt;br /&gt;
| caption = &lt;br /&gt;
| collapsible = &lt;br /&gt;
| author = &lt;br /&gt;
| developer = [[Intel]]&lt;br /&gt;
| released = &lt;br /&gt;
| latest release version = 2021.8&lt;br /&gt;
| latest release date = {{Release date and age|2023|02|17}}&amp;lt;ref&amp;gt;{{cite web |title= oneAPI Threading Building Blocks Github Releases |website=[[GitHub]] |url=https://github.com/oneapi-src/oneTBB/releases}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
| latest preview version = &lt;br /&gt;
| latest preview date = &lt;br /&gt;
| frequently updated = &lt;br /&gt;
| programming language = [[C++]]&lt;br /&gt;
| operating system = FreeBSD, Linux, Solaris, macOS, Windows, Android&lt;br /&gt;
| platform = &lt;br /&gt;
| size = &lt;br /&gt;
| language = &lt;br /&gt;
| status = &lt;br /&gt;
| genre = [[library (computing)|library]] or [[Software framework|framework]]&lt;br /&gt;
| license = dual: commercial / open source ([[Apache 2.0]]), plus Freeware&amp;lt;ref name=&amp;quot;freelib&amp;quot;&amp;gt;{{cite web|title=No Cost Options for Intel Support yourself, Royalty-Free|url=https://software.intel.com/en-us/free_tools_and_libraries}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
| website = {{URL|https://github.com/oneapi-src/oneTBB}}&amp;lt;br/&amp;gt;{{URL|intel.com/oneTBB}}&amp;lt;br/&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
[[oneAPI (compute acceleration)|oneAPI]] &amp;#039;&amp;#039;&amp;#039;Threading Building Blocks&amp;#039;&amp;#039;&amp;#039; (oneTBB; formerly Threading Building Blocks or TBB) is a [[C++]] [[template (C++)|template]] [[library (computer science)|library]] developed by [[Intel]] for [[parallel programming]] on [[multi-core processor]]s. Using TBB, a computation is broken down into [[task parallelism|tasks]] that can run in parallel. The library manages and [[scheduling (computing)|schedules]] [[thread (computing)|threads]] to execute these tasks.&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
A oneTBB program creates, synchronizes, and destroys graphs of dependent tasks according to &amp;#039;&amp;#039;algorithms&amp;#039;&amp;#039;, 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.&lt;br /&gt;
&lt;br /&gt;
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.&amp;lt;ref name=&amp;quot;contreras&amp;quot;&amp;gt;{{cite conference |last1=Contreras |first1=Gilberto |first2=Margaret |last2=Martonosi |title=Characterizing and improving the performance of Intel Threading Building Blocks |conference=IEEE Int&amp;#039;l Symp. on Workload Characterization |year=2008 |url=http://www.iiswc.org/iiswc2008/Papers/006.pdf}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oneTBB, like the [[Standard Template Library|STL]] (and the part of the C++ standard library based on it), uses templates extensively. This has the advantage of low-overhead [[Polymorphism in object-oriented programming|polymorphism]], since templates are a compile-time construct which modern C++ [[compiler]]s can largely optimize away.&lt;br /&gt;
&lt;br /&gt;
oneTBB is available commercially as a binary distribution with support,&amp;lt;ref name=&amp;quot;TBB.com&amp;quot;&amp;gt;https://software.intel.com/en-us/intel-tbb Intel Threading Building Blocks Commercial Version Homepage&amp;lt;/ref&amp;gt; and as [[open-source software]] in both source and binary forms.&lt;br /&gt;
&lt;br /&gt;
oneTBB does not provide guarantees of [[Indeterminacy in concurrent computation|determinism]] or freedom from [[data race]]s.&amp;lt;ref&amp;gt;{{cite conference |first1=Robert L. |last1=Bocchino Jr. |first2=Vikram S. |last2=Adve |first3=Sarita V. |last3=Adve |first4=Marc |last4=Snir |title=Parallel Programming Must Be Deterministic by Default |conference=[[USENIX]] Workshop on Hot Topics in Parallelism |year=2009 |url=https://www.usenix.org/legacy/event/hotpar09/tech/full_papers/bocchino/bocchino_html/}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Library contents==&lt;br /&gt;
oneTBB is a collection of components for parallel programming:&lt;br /&gt;
* Basic algorithms: &amp;lt;code&amp;gt;parallel_for&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;parallel_reduce&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;parallel_scan&amp;lt;/code&amp;gt;&lt;br /&gt;
* Advanced algorithms: &amp;lt;code&amp;gt;parallel_pipeline&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;parallel_sort&amp;lt;/code&amp;gt;&lt;br /&gt;
* [[Container (data structure)|Container]]s: &amp;lt;code&amp;gt;concurrent_queue&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;concurrent_priority_queue&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;concurrent_vector&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;concurrent_hash_map&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;concurrent_unordered_map&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;concurrent_unordered_set&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;concurrent_map&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;concurrent_set&amp;lt;/code&amp;gt;&lt;br /&gt;
* Memory allocation: &amp;lt;code&amp;gt;scalable_malloc&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;scalable_free&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;scalable_realloc&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;scalable_calloc&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;scalable_allocator&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;cache_aligned_allocator&amp;lt;/code&amp;gt;&lt;br /&gt;
* [[Mutual exclusion]]: &amp;lt;code&amp;gt;mutex&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;spin_mutex&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;queuing_mutex&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;spin_rw_mutex&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;queuing_rw_mutex&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;recursive_mutex&amp;lt;/code&amp;gt;&lt;br /&gt;
* Timing: portable fine grained global time stamp&lt;br /&gt;
* Task scheduler: direct access to control the creation and activation of tasks&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [https://software.intel.com/content/www/us/en/develop/tools/oneapi/base-toolkit.html Intel oneAPI Base Toolkit]&lt;br /&gt;
* Intel [[Integrated Performance Primitives]] (IPP)&lt;br /&gt;
* Intel oneAPI [[Data Analytics Library]] (oneDAL)&lt;br /&gt;
* Intel oneAPI [[Math Kernel Library]] (oneMKL)&lt;br /&gt;
* Intel Cryptography Primitives Library&lt;br /&gt;
* [[Intel Parallel Advisor|Intel Advisor]]&lt;br /&gt;
* [[Intel Parallel Inspector|Intel Inspector]]&lt;br /&gt;
* [[Intel VTune Amplifier|Intel VTune Profiler]]&lt;br /&gt;
* [[Intel Concurrent Collections]] (CnC)&lt;br /&gt;
* [[Algorithmic skeleton]]&lt;br /&gt;
* [[Parallel computing]]&lt;br /&gt;
* [[List of C++ multi-threading libraries]]&lt;br /&gt;
* [[List of C++ template libraries]]&lt;br /&gt;
* [[Parallel Patterns Library]]&lt;br /&gt;
* [[Grand Central Dispatch]] (GCD)&lt;br /&gt;
* [https://www.thoughtworks.com/insights/books/building-evolutionary-architectures Software Architecture Building Blocks]&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
{{reflist|30em}}&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
* {{Citation|last1=Voss|first1=Michael |last2=Asenjo|first2=Rafael |last3=Reinders|first3=James |date=2019 |title=Pro TBB|publisher=Apress|isbn=978-1-4842-4397-8|doi=10.1007/978-1-4842-4398-5 |s2cid=195847637 |url=http://www.oapen.org/download/?type=document&amp;amp;docid=1007323 |doi-access=free }}&lt;br /&gt;
* {{Citation|last=Reinders|first=James|date=July 2007|url=https://archive.org/details/intelthreadingbu0000rein|title=Intel Threading Building Blocks: Outfitting C++ for Multi-core Processor Parallelism|edition=Paperback|location=Sebastopol|publisher=O&amp;#039;Reilly Media|isbn=978-0-596-51480-8|url-access=registration}}&lt;br /&gt;
* {{Citation|last=Voss|first=M.|date=October 2006|url=http://www.devx.com/cplus/Article/32935|title=Demystify Scalable Parallelism with Intel Threading Building Blocks&amp;#039; Generic Parallel Algorithms|access-date=2007-06-06|archive-date=2012-02-05|archive-url=https://web.archive.org/web/20120205044110/http://www.devx.com/cplus/Article/32935|url-status=dead}}&lt;br /&gt;
* {{Citation|last=Voss|first=M.|date=December 2006|url=http://www.devx.com/cplus/Article/33334|title=Enable Safe, Scalable Parallelism with Intel Threading Building Blocks&amp;#039; Concurrent Containers|access-date=2007-06-06|archive-date=2012-02-05|archive-url=https://web.archive.org/web/20120205044133/http://www.devx.com/cplus/Article/33334|url-status=dead}}&lt;br /&gt;
* {{Citation|doi=10.1145/1133956.1133967|pages=74–83|chapter=McRT-Malloc|title=Proceedings of the 2006 international symposium on Memory management - ISMM &amp;#039;06|year=2006|last1=Hudson|first1=Richard L.|last2=Saha|first2=Bratin|last3=Adl-Tabatabai|first3=Ali-Reza|last4=Hertzberg|first4=Benjamin C.|isbn=978-1595932211|s2cid=9120368}}&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
*[https://spec.oneapi.io/versions/latest/elements/oneTBB/source/nested-index.html oneTBB Industry Specification]&lt;br /&gt;
*{{github|oneapi-src/oneTBB}}&lt;br /&gt;
*{{Official website|intel.com/oneTBB}} at Intel&lt;br /&gt;
&lt;br /&gt;
{{Intel software}}&lt;br /&gt;
{{Parallel Computing}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Concurrent programming libraries]]&lt;br /&gt;
[[Category:Application programming interfaces]]&lt;br /&gt;
[[Category:C++ programming language family]]&lt;br /&gt;
[[Category:Generic programming]]&lt;br /&gt;
[[Category:Threads (computing)]]&lt;br /&gt;
[[Category:C++ libraries]]&lt;br /&gt;
[[Category:Intel software]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Liz</name></author>
	</entry>
</feed>