Многопоточность важна, и новая версия 3.0 Intel Threading Building Blocks представляет интерес для всех.
Недавно была анонсирована новая версия Intel Threading Building Blocks (TBB). Учитывая, насколько важен переход от однопоточных приложений к многопоточным приложениям, которые наилучшим образом используют многоядерные процессоры, мы все должны обращать на это внимание, даже если вы не программируете на C ++.
TBB — это параллельная библиотека для C ++, доступная как в коммерческой, так и в версии с открытым исходным кодом — одно и то же программное обеспечение, разные лицензии. Новая версия теперь работает с Visual Studio 2010 и может работать поверх среды выполнения с параллелизмом под Windows 7.
Многие из новых функций связаны с необходимостью не отставать от движущейся цели, которой является C ++ 0x. Последнее обновление стандарта было выпущено в марте 2010 года, и TBB использует новые функции там, где это необходимо. Например, TBB использует правильную реализацию некоторых аспектов обработки исключений потока, если она поддерживается компилятором, и использует свою старую реализацию, если нет. Существуют некоторые незначительные изменения, которые могут нарушить существующий код, но их легко исправить.
В новой версии вводится использование лямбда-выражений / функций (также новых в C ++ 0x), которые имеют естественное сходство с параллелизмом, потому что вам так часто приходится ссылаться на фрагмент кода, как если бы это были данные для управления его выполнением. Использование лямбда-выражений не добавляет никаких новых возможностей, но значительно упрощает понимание кода. У «конвейера» теперь есть строго типизированная версия parallel_pipeline, которая также допускает лямбда-выражения. Это означает, что вы можете построить конвейер, который возвращает типизированный указатель, используя параметры шаблона.
Другие новые функции включают новый ассоциативный контейнер, который может разрешать одновременную вставку и обход без видимой блокировки. Планировщик задач теперь поддерживает запуск и забывание задач, независимое планирование задач для внешних потоков.
Также новинкой, но не совсем улучшением, является руководство по шаблону проектирования TBB. Это набор шаблонов проектирования в параллельном программировании с использованием TBB. Шаблоны включают нечетно-четную связь, волновой фронт, сокращение, разделение и владение, поток графического интерфейса пользователя, невытесняющие приоритеты, ленивую инициализацию и подсчет ссылок.