目录 1
译者序 1
序言 1
第1章并发编程的乐趣 1
1.1什么是并发? 1
1.2并行编程的优点 3
1.3分布式编程的优点 5
1.4最少的工作需求 6
1.5软件并发的基本层次 7
1.6 C++中没有支持并行性的关键字 8
1.7并行和分布式编程的编程环境 11
小结——关于并发 11
2.1 范例转移 12
第2章并行和分布式编程的挑战 12
2.2协调问题 14
2.3间或的硬件失效与软件退出 18
2.4过多的并行化或分布式可能产生负面后果 18
2.5选择一种好的体系结构需要进行研究 19
2.6对不同测试和调试技术的需求 19
2.7在并行或分布式设计中必须进行交流 20
小结 21
第3章将C++程序分成多个任务 22
3.1进程的定义 22
3.2进程剖析 24
3.3进程状态 26
3.4进程调度 28
3.5上下文切换 33
3.6创建进程 34
3.7终止进程 46
3.8进程资源 48
3.9什么是异步进程和同步进程 52
3.10将程序分成多个任务 55
小结 63
第4章将C++程序分成多个线程 64
4.1线程的定义 64
4.2线程剖析 69
4.3线程调度 71
4.4线程资源 75
4.5线程模型 76
4.6 Pthread库介绍 80
4.7简单多线程程序剖析 81
4.8创建线程 83
4.9管理线程 90
4.10线程安全和线程库 111
4.11将程序分解成多个线程 113
小结 122
第5章任务间并发的同步 124
5.1执行顺序的协调 124
5.2同步数据访问 127
5.3什么是信号量? 129
5.4面向对象的同步方法 144
小结 144
第6章通过PVM为C++增加并行编程能力 145
6.1 PVM支持的经典并行模型 145
6.2为C++语言提供的PVM库 146
6.3 PVM的基本机制 162
6.4在PVM任务中访问标准输入(stdin)和标准输出(stdout) 171
小结 171
第7章错误处理、异常和软件可靠性 172
7.1什么是软件可靠性? 173
7.2软件层和硬件组件中的失效 174
7.3依赖于软件规范的缺陷定义 175
7.4考虑在哪里处理缺陷与在哪里处理异常 175
7.5软件可靠性:一个简单方案 177
7.6在错误处理中使用Map对象 178
7.7 C++的异常处理机制 181
7.8事件图、逻辑表达式和逻辑图 186
小结 188
第8章C++分布式面向对象编程 189
8.1工作的分解与封装 190
8.2访问其他地址空间中的对象 193
8.3基本CORBA消费者剖析 202
8.4 CORBA生产者剖析 204
8.5 CORBA 应用程序的基本设计蓝图 205
8.6名字服务 209
8.7深入了解对象适配器 217
8.8实现池与接口池 218
8.9使用CORBA的简单分布式Web服务 219
8.10交易服务 220
8.11客户/服务器范例 222
小结 223
第9章MPI与使用模板的SPMD和MPMD模型 224
9.1 MPI的工作分解结构 225
9.2使用模板函数表示MPI任务 229
9.3简化MPI通信 237
小结 242
第10章可视化并发和分布式系统设计 244
10.1可视化结构 245
10.2可视化并发行为 257
10.3可视化整个系统 271
小结 274
第11章设计支持并发的组件 275
11.1使用接口类 276
11.2深入了解面向对象的互斥和接口类 281
1 1.3保持流隐喻 287
11.4 与PVM流协同工作的自定义类的设计 292
11.5把面向对象的管道和fifo作为低级构建块 294
11.6支持并发的框架类组件 312
小结 315
第12章实现面向agent的体系结构 317
12.1什么是agent? 317
12.2什么是面向 agent编程? 321
12.3基本agent组件 324
12.4 用C++实现agent 329
12.5多agent系统 344
小结 344
第13章使用PVM、线程和C++组件的黑板体系结构 345
13.1黑板模型 345
13.2构造黑板的方法 347
1 3.3知识库剖析 349
13.4黑板的控制策略 349
13.5使用CORBA对象实现黑板 351
13.6使用全局对象实现黑板 365
13.7使用Pthread激活知识库 367
小结 369
附录A类与对象图解 371
附录B系统接口 380