C++并行与分布式编程

C++并行与分布式编程
作 者: Cameron Hughes Tracey Hughes 肖和平 张杰良 肖和平
出版社: 中国电力出版社
丛编项: 深入C++系列
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: C++
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

  CAMERON HUGHES是CTEST实验室的一名高级软件工程师,同时还是Youngstown 州立大学的一名编程人员/分析师。他参与了各种规模的软件开发工作,目前正在参与Proteus V 系统的集群编程,该系统使用了CTEST实验室和Youngstown大学的NLP和知识表示建模方法。TRACEY HUGHES是CTEST实验室的一名软件工程师,她在该实验室进行图形编程、C++模拟、图像处理类库以及虚拟世界的开发。他们二人合著了许多作品,包括《Linux Rapid Application Development》和《Object-Oriented Multithreading Using C++》等。

内容简介

本书以作者成功的软件设计和实现的经验系统地论述了使用C++语言进行并行与分布式编程的技术,对并行与分布式编程中固有的问题提出了多种解决方案。本书的主要内容有:并发编程的乐趣;并行和分布式编程的挑战;将C++程序分成多个任务;将C++程序分成多个线程;任务间并发的同步;通过PVM为C++增加并行编程能力;错误处理、异常和软件可靠性;C++分布式面向对象编程;MPI与使用模板的SPMD和MPMD模型;可视化并发和分布式系统设计;设计支持并发的组件;实现面向agent的体系结构;使用PVM、线程和C++组件的黑板体系结构。除此之外,本书还提供了包含Pthread线程库的新POSIX/UNIX IEEE标准,可供编程人员参考。本书适合于计算机编程人员、软件开发人员、设计人员、研究人员和软件设计师阅读,也可作为希望使用C++进行并行与分布式软件开发的计算机专业学生的入门教材。

图书目录

第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章 并行和分布式编程的挑战 12

2.1 范例转移 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) 170

小结 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

11.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

13.3 知识库剖析 349

13.4 黑板的控制策略 349

13.5 使用CORBA对象实现黑板 351

13.6 使用全局对象实现黑板 365

13.7 使用Pthread激活知识库 367

小结 369

附录A 371

附录B 380