多核处理器的出现使得并行编程成为了每个程序员关注的主题。不具备多处理器核的计算机系统已经变得越来越少。本书为C++程序给出了并行编程的解决方案,它既不要求放弃C++,也不要求使用那些裸线程或者本地线程。
本书介绍了如何通过Intel线程构建模块来最大限度地利用多核处理器的强大性能。TBB是一个可移植的C++库,能够运行在Windows、Linux、Macintosh以及UNIX等系统上。本书阐述了在多线程编程中的关键任务以及如何通过TBBE上可移植的和稳定的方式来实现它们。书中包含了大量的示例和丰富的资料,给出了常见的使用模式,揭示了TBB中的精彩之处,并且还提供了一些指导意见,用来在不同的并行编程方式上进行选择以获得最佳的性能。
本书介绍了如何通过Intel线程构建模块来最大限度地利用多核处理器的强大性能。TBB是一个可移植的C++库,能够运行在Windows、Linux、Macintosh以及UNIX等系统上。本书阐述了在多线程编程中的关键任务以及如何通过TBBE上可移植的和稳定的方式来实现它们。书中包含了大量的示例和丰富的资料,给出了常见的使用模式,揭示了TBB中的精彩之处,并且还提供了一些指导意见,用来在不同的并行编程方式上进行选择以获得最佳的性能。本书的内容包括:
充分利用多核系统中并行语义的简单且高效的方式。
编写并行程序的关键问题。
多线程中的常见模式。
用于高效处理的线程安全容器。
任务调度。
在线程环境中的内存管理。
本书说明了TBB能够比原始线程更方便地在C++中指定并行语义,同时还可以提升程序的性能、可移植性以及可伸缩性。在开始学习TBB时,并不要求具备并行编程或者多核处理器的经验。任何希望在多核系统上编写软件的程序员,都能够从本书中获益。
第8章 计时
第9章 任务调度器
基于任务的编程在什么情况下是不合适的
远远好于本地裸线程
初始化库是必需的
斐波纳契(Fibonacci)数列示例
任务调度简介
任务调度的工作原理
任务重现模式
高效利用调度器
任务调度器的接口
任务调度器小结
第10章 成功的关键因素
通向成功的关键步骤
松弛串行执行
方法和库的安全并发性
调试版本与发布版本
为了提高效率
支持调试功能
与其他线程软件包混合使用
命名约定
第11章 编程示例
Aha!
其他一些关键点
parallel_for示例
生命游戏
parallel_reduce示例
统计字符串:使用concurrent_hash_map
Quicksort:可视的任务密取
一种更优的矩阵乘法(Strassen算法)
高级任务编程
网络数据包处理流水线
内存分配
游戏线程示例
物理相互作用的代码和更新的代码
Open Dynamics Engine
第12章 发展历程及相关项目
库
语言
编译器指令
泛型编程
快存
时间分片的开销
Lambda函数简介
阅读参考