致中文版读者 1
序 5
Intel线程构建模块首席开发师的笔记 7
前言 11
第1章 为什么需要线程构建模块 19
简介 20
优势 20
第2章 并行思维 25
并行思维的要素 25
分解 27
扩展性与加速性 31
什么是线程 37
互斥和锁 39
正确性 40
抽象 43
模式 43
直觉思维 45
第3章 基本算法 46
库的初始化和结束 47
循环的并行化 49
递归区间的定义 69
对循环的小结 83
第4章 高级算法 84
用于流的并行算法 85
第5章 容器 100
concurrent_queue 101
concurrent_vector 106
concurrent_hash_map 112
第6章 可扩展的内存分配 123
限制 123
内存分配中的若干问题 124
内存分配器 124
替换malloc、new和delete 126
第7章 互斥 133
何时使用互斥 133
Mutexes 135
互斥量 142
原子操作 147
第8章 计时 155
第9章 任务调度器 159
基于任务的编程在什么情况下是不合适的 159
远远好于本地裸线程 160
初始化库是必需的 163
斐波纳契数列示例 163
任务调度简介 166
任务调度的工作原理 168
任务重现模式 171
高效利用调度器 173
任务调度器的接口 179
任务调度器小结 196
第10章 成功的关键因素 197
通向成功的关键步骤 197
松弛串行执行 198
方法和库的安全并发性 199
调试版本与发布版本 200
为了提高效率 200
支持调试功能 200
与其他线程软件包混合使用 203
命名约定 204
第11章 编程示例 206
Aha! 206
其他一些关键点 208
parallel_for示例 209
生命游戏 219
parallel_reduce示例 227
统计字符串:使用concurrent_hash_map 237
Quicksort:可视的任务密取 243
一种更优的矩阵乘法(Strassen算法) 251
高级任务编程 257
网络数据包处理流水线 266
内存分配 285
游戏线程示例 289
物理相互作用的代码和更新的代码 299
Open Dynamics Engine 303
第12章 发展历程及相关项目 310
库 311
语言 312
编译器指令 313
泛型编程 313
快存 316
时间分片的开销 316
Lambda函数简介 317
阅读参考 318