Intel Threading Building Blocks: відмінності між версіями

[неперевірена версія][неперевірена версія]
Вилучено вміст Додано вміст
Немає опису редагування
опрацьовано параграф Структура бібліотеки
Рядок 17:
'''Intel Threading Building Blocks''' (також відома як '''TBB''')&nbsp;— кросплатформна бібліотека шаблонів С++<ref>[http://www.intel.com/cd/software/products/emea/rus/343556.htm Intel® TBB&nbsp;— ISN<!-- Заголовок добавлен ботом -->]</ref>, розроблена компанією [[Intel]] для паралельного програмування. Бібліотека містить алгоритми і структури даних, що дозволяють програмісту уникнути багатьох складнощів, що виникають при використанні традиційних реалізацій потоків, таких як [[POSIX Threads]], [[ниті у Windows|Windows threads]] або [[Boost|Boost Threads]], в яких створюються окремі потоки виконання, що синхронізуються і зупиняються вручну. Бібліотека TBB абстрагує доступ до окремих потоків. Всі операції трактуються як «задачі», які динамічно розподіляються між ядрами процесора. Крім того, досягається ефективне використання [[Кеш|кешу]]. Програма, написана з використанням TBB, створює, синхронізує і руйнує графи залежностей завдань відповідно до алгоритму. Потім завдання виконуються відповідно до залежностей. Цей підхід дозволяє програмувати паралельні алгоритми на високому рівні, абстрагуючись від деталей архітектури конкретної машини.
 
== СтруктураВміст бібліотеки ==
TBB це колекція компонент для паралельного програмування:
* Базові алгоритми: <code>parallel_for</code>, <code>parallel_reduce</code>, <code>parallel_scan</code>
* Розвинуті алгоритми: <code>parallel_while</code>, <code>parallel_do</code>, <code>parallel_pipeline</code>, <code>parallel_sort</code>
* [[Контейнер (структура даних)|Контейнери]]s: <code>concurrent_queue</code>, <code>concurrent_priority_queue</code>, <code>concurrent_vector</code>, <code>concurrent_hash_map</code>
* Виділення пам'яті: <code>scalable_malloc</code>, <code>scalable_free</code>, <code>scalable_realloc</code>, <code>scalable_calloc</code>, <code>scalable_allocator</code>, <code>cache_aligned_allocator</code>
* [[Взаємне виключення]]: <code>mutex</code>, <code>spin_mutex</code>, <code>queuing_mutex</code>, <code>spin_rw_mutex</code>, <code>queuing_rw_mutex</code>, <code>recursive_mutex</code>
* [[Атомарна операція|Атомарні операції]]s: <code>fetch_and_add</code>, <code>fetch_and_increment</code>, <code>fetch_and_decrement</code>, <code>compare_and_swap</code>, <code>fetch_and_store</code>
* Час: переносима реалізація дрібногранульованої глобальної [часової мітки|часова мітка]
* Плаування завдань: безпосередній доступ до контролювання створення та виконання завдань
 
Бібліотека є колекцією шаблонів класів і функцій для паралельного програмування. У бібліотеці реалізовані:
 
* параллельні алгоритми: for, reduce, do, scan, while, pipeline, sort;
* потоко-безпечні контейнери: вектор, черга, геш-таблиця;
* масштабовані розподільники пам'яті;
* [[м'ютекс]]и;
* атомарні операції;
* глобальна тимчасова мітка;
* планувальник задач;
* обчислювальний граф.
 
== Історія ==