Intel TBB 提供了许多好处。您可以先关注以下几个特性:
- 与线程不同,您可以对任务使用更高程度的抽象。Intel 声称,在 Linux® 系统上,启动和结束任务的速度是对线程执行相同操作的 18 倍。
- Intel TBB 附带了一个任务调度程序,该程序可以跨多个逻辑和物理内核高效地处理负载平衡。Intel TBB 中的默认任务调度策略不同于大多数线程调度程序所拥有的轮询策略。
- Intel TBB 提供了一些可直接使用的线程安全容器,比如
concurrent_vector
和concurrent_queue
。 - 可以使用通用的并行算法,如
parallel_for
和parallel_reduce
。 - 模板类
atomic
中提供了无锁(Lock-free,也称为 mutex-free)并发编程支持。这种支持使得 Intel TBB 适合用于高性能的应用程序,因为 Intel TBB 可以锁定和解除锁定互斥体 (mutex)。 - 这都是用
C++
实现的!没有进行任何扩展或使用宏,Intel TBB 只使用这种语言,同时还使用了大量的模板。
使用 Intel TBB 需要具备许多先决条件。在开始之前,您应当满足以下要求:
- 一些
C++
模板,并了解标准模板库 (STL)。 - 了解线程,POSIX 线程或 Windows® 线程均可。
虽然不是必须的,但是 C++0x
中的 lambda 功能对 Intel TBB 来说相当有用。
本文对 Intel TBB 的讨论是从创建和研究一些任务和同步原语(互斥体)开始的,然后了解如何使用并发容器和并行算法。最后介绍如何使用原子模板来实现无锁编程。
原网站:http://www.ibm.com/developerworks/cn/aix/library/au-intelthreadbuilding/index.html