Intel Threading Building Blocks编程指南
聂雪军 等译
出版时间:2009年01月
页数:323
“串行计算的时代已经结束了…… 本书很好地介绍了线程构建模块库,无论是初学者还是专家,都能通过本书清晰地理解并发的复杂性。”
—— Charles E. Leiserson,麻省理工大学计算机与人工智能实验室
“我们通常习惯说,首先要使程序正确,然后再提高程序的速度。现在,我们无需这么做。TBB使我们在正确地设计程序的同时,还能提升Maya前台视图的速度。本书将向你展示如何通过在代码中使用TBB来获得最大的性能提升。”
—— Martin Watt,Autodesk公司高级软件工程师
本书介绍了如何通过Intel线程构建模块来最大限度地利用多核处理器的强大性能。TBB是一个可移植的C++库,能够运行在Windows、 Linux、 Macintosh以及UNIX等系统上。本书阐述了在多线程编程中的关键任务以及如何通过TBB以可移植的和稳定的方式来实现它们。书中包含了大量的示例和丰富的资料,给出了常见的使用模式,揭示了TBB中的精彩之处,并且还提供了一些指导意见,用来在不同的并行编程方式上进行选择以获得最佳的性能。本书的内容包括:
*充分利用多核系统中并行语义的简单且高效的方式。
*多核系统上编写软件的程序员
*编写并行程序的关键问题。
*多线程中的常见模式。
*用于高效处理的线程安全容器。
*。任务调度。
*在线程环境中的内存管理。
本书说明了TBB能够比原始线程更方便地在C++中指定并行语义,同时还可以提升程序的性能、可移植性以及可伸缩性。在开始学习TBB时,并不要求具备并行编程或者多核处理器的经验。任何希望在多核系统上编写软件的程序员,都能够从本书中获益。
- 致中文版读者
- 序
- Intel线程构建模块首席开发师的笔记
- 前言
- 第1章 为什么需要线程构建模块
- 简介
- 优势
- 第2章 并行思维
- 并行思维的要素
- 分解
- 扩展性与加速性
- 什么是线程
- 互斥和锁
- 正确性
- 抽象
- 模式
- 直觉思维
- 第3章 基本算法
- 库的初始化和结束
- 循环的并行化
- 递归区间的定义
- 对循环的小结
- 第4章 高级算法
- 用于流的并行算法
- 第5章 容器
- concurrent_queue
- concurrent_vector
- concurrent_hash_map
- 第6章 可扩展的内存分配
- 限制
- 内存分配中的若干问题
- 内存分配器
- 替换malloc、new和delete
- 第7章 互斥
- 何时使用互斥
- Mutexes
- 互斥量
- 原子操作
- 第8章 计时
- 第9章 任务调度器
- 基于任务的编程在什么情况下是不合适的
- 远远好于本地裸线程
- 初始化库是必需的
- 斐波纳契(Fibonacci)数列示例
- 任务调度简介
- 任务调度的工作原理
- 任务重现模式
- 高效利用调度器
- 任务调度器的接口
- 任务调度器小结
- 第10章 成功的关键因素
- 通向成功的关键步骤
- 松弛串行执行
- 方法和库的安全并发性
- 调试版本与发布版本
- 为了提高效率
- 支持调试功能
- 与其他线程软件包混合使用
- 命名约定
- 第11章 编程示例
- Aha!
- 其他一些关键点
- parallel_for示例
- 生命游戏
- parallel_reduce示例
- 统计字符串: 使用concurrent_hash_map
- Quicksort:可视的任务密取
- 一种更优的矩阵乘法(Strassen算法)
- 高级任务编程
- 网络数据包处理流水线
- 内存分配
- 游戏线程示例
- 物理相互作用的代码和更新的代码
- Open Dynamics Engine
- 第12章 发展历程及相关项目
- 库
- 语言
- 编译器指令
- 泛型编程
- 快存
- 时间分片的开销
- Lambda函数简介
- 阅读参考
书名:Intel Threading Building Blocks编程指南
译者:聂雪军 等译
国内出版社:机械工业出版社
出版时间:2009年01月
页数:323
书号:978-7-111-24231-4
原版书出版商:O'Reilly Media
James Reinders(仁达敬)
James Reinders(仁达敬),Intel软件开发产品部门的首席讲师,他是一位高级工程师,于1989年加入Intel公司。他在许多项目上做出了贡献,包括世界上第一台万亿次浮点运算超级计算机(ASCI Red)以及iWarp、Pentium Pro、Pentium II、Itanium、 Pentium 4等处理器上的编译器和架构工作。他在处理器架构、编译器优化、并行计算机架构以及为软件开发人员编写工具产品上有着多年的经验。
Reinders还是www.goparallel.com网站上月刊“The Gauntlet”的专栏编辑,他还编写了《VTune Performance Analyzer Essentials》(Intel Press)一书,并参与编写了《Multi-Core Programming》(Intel Press)一书。
本书封面上的动物是一只野生金丝雀,它是雀科中的一种小型鸣禽。它的别名也叫作加那利金丝雀或者大西洋金丝雀,因为它原产自位于西欧的岛屿,尤其是马德拉群岛、亚述尔群岛和加那利群岛等。金丝雀这个名字来源于拉丁文中的canaria(意指“狗”),Pliny the Elder在他的《Naturalis Historia》中最早使用了这个名字,得源于生活在这些岛上的巨型狗。金丝雀通常生活在果园、农田以及灌木丛,它们在灌木和树林中筑巢。
虽然野生金丝雀比驯养的金丝雀要稍大一些,它们在外表上是非常相似的。它的胸脯为黄绿色,背上有褐色斑纹。与许多其他物种一样,雄性金丝雀的色泽比雌性金丝雀的色泽要更为鲜明。雄性金丝雀还有一副好嗓子。当西班牙人在15世纪征服这些群岛时,他们驯养了金丝雀并且开始繁殖它们。到了16世纪,金丝雀在整个欧洲都被当做一种宠物。(Samuel Pepys在1661年的一篇日记中记述了他的“金丝雀”)。在有选择性地繁殖了五百年之后,进化出了许多金丝雀品种,包括现在常见的亮黄色种类的金丝雀。金丝雀是一种大受欢迎的宠物,因为它可以存活10年左右,不需要特殊的照料,而且人们认为它的叫声是所有鸟类中最悦耳的。
在20世纪80年代,煤矿工人将金丝雀用作一种报警工具,在每个矿井中放两只金丝雀。根据美国矿产局的报告,金丝雀的报警效果比老鼠要好,因为它们对气体更敏感,并且在出现瓦斯时更显得不安。矿井中的金丝雀可以叫一整天,但如果一氧化碳浓度上升,它将停止鸣叫并且在栖枝上抖动,直至死亡——这可以警告矿工们赶快离开。