C++并行与分布式编程
[特价中]基本信息
内容简介回到顶部↑
本书以作者成功的软件设计和实现的经验系统地论述了使用C++语言进行并行与分布式编程的技术,对并行与分布式编程中固有的问题提出了多种解决方案。
本书的主要内容有:并发编程的乐趣;并行和分布式编程的挑战;将C++程序分成多个任务;将C++程序分成多个线程;任务间并发的同步;通过PVM为C++增加并行编程能力;错误处理、异常和软件可靠性;C++分布式面向对象编程;MPI与使用模板的SPMD和MPMD模型;可视化并发和分布式系统设计;设计支持并发的组件;实现面向agent的体系结构;使用PVM、线程和C++组件的黑板体系结构。除此之外,本书还提供了包含Pthread线程库的新POSIX/UNIX IEEE标准,可供编程人员参考。
本书适合于计算机编程人员、软件开发人员、设计人员、研究人员和软件设计师阅读,也可作为希望使用C++进行并行与分布式软件开发的计算机专业学生的入门教材。
本书的主要内容有:并发编程的乐趣;并行和分布式编程的挑战;将C++程序分成多个任务;将C++程序分成多个线程;任务间并发的同步;通过PVM为C++增加并行编程能力;错误处理、异常和软件可靠性;C++分布式面向对象编程;MPI与使用模板的SPMD和MPMD模型;可视化并发和分布式系统设计;设计支持并发的组件;实现面向agent的体系结构;使用PVM、线程和C++组件的黑板体系结构。除此之外,本书还提供了包含Pthread线程库的新POSIX/UNIX IEEE标准,可供编程人员参考。
本书适合于计算机编程人员、软件开发人员、设计人员、研究人员和软件设计师阅读,也可作为希望使用C++进行并行与分布式软件开发的计算机专业学生的入门教材。
作译者回到顶部↑
本书提供作译者介绍
CAMERON HUGHES是CTEST实验室的一名高级软件工程师,同时还是Youngstown 州立大学的一名编程人员/分析师。他参与了各种规模的软件开发工作,目前正在参与Proteus V 系统的集群编程,该系统使用了CTEST实验室和Youngstown大学的NLP和知识表示建模方法。
TRACEY HUGHES是CTEST实验室的一名软件工程师,她在该实验室进行图形编程、C++模拟、图像处理类库以及虚拟世界的开发。
他们二人合著了许多作品,包括《Linux Rapid Application Development》和《Object-Oriented .. << 查看详细
TRACEY HUGHES是CTEST实验室的一名软件工程师,她在该实验室进行图形编程、C++模拟、图像处理类库以及虚拟世界的开发。
他们二人合著了许多作品,包括《Linux Rapid Application Development》和《Object-Oriented .. << 查看详细
目录回到顶部↑
译者序
序 言
第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
序 言
第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
译者序回到顶部↑
为了使用多线程技术在分布式环境下进行项目开发,我们阅读过很多并行与分布式编程方面的书籍,这些书籍确实也让我们学到不少如何进行并行与分布式编程的技能,学会了使用一些工具进行并行与分布式编程,比如使用CORBA进行分布式编程等等。但是,我们一直没有完整地认识并行与分布式编程中所固有的问题,更不可能对这些问题提出非常漂亮的解决方案,因此,在项目的实际开发过程中,总是 “只见树木,不见森林”,不能“由此及彼,由表及里”。尤其是在进行分布式系统建模时,有无从下手的感觉。看完本书后,我们豁然开朗,对并行与分布式编程有了崭新的认识,解决了一些实际开发过程中一直困扰我们的疑团。
与其他很多有关并行与分布式编程的书籍相比,本书不是详细地介绍用于并行与分布式编程的工具的使用,而是从分析并行与分布式编程中固有的问题入手,并紧紧围绕这些问题,从程序体系结构的角度系统地提出了多种解决方案及模型。它除了能够帮助我们了解用于并行与分布式编程的一些技术和开发工具之外,其显著特点在于书中提出了支持并行与分布式编程的软件组织方法,使我们能够从整体上把握并行与分布式编程的关键。这一点无论对编程人员还是软件设计师都是至关重要的。
本书的翻译人员由国防科技大学计算机学院并行与分布式计算方向的研究人员组成,他们都参加过国家“863”重点课题的研究工作,具备丰富的理论和实践经验。
非常感谢CAMERON HUGHES和TRACEY HUGHES为我们带来一本如此优秀的著作,我们从本书中学到很多以前想学而没有学到的东西,极大地拓宽了我们的视野。如果你正在进行并行或分布式软件开发,或者希望进行并行或分布式软件开发,那么,本书必定是一本不可多得的参考书籍。
本书主要由肖和平、张杰良翻译。参加本书翻译的还有方小永、张绪冰、曲向丽、李磊、李蕾等。全书最后由张杰良统稿。Be Flying工作室负责人肖国尊负责本书的译员组织与翻译质量和进度的控制。由于我们的水平有限,错误与不到位之处在所难免。敬请广大读者提供反馈意见,读者可以将意见e-mail至be_flying@sohu.com,我们会仔细查阅读者发来的每一封邮件,以求进一步提高今后翻译的质量。
译者
2003年12月28日下午
与其他很多有关并行与分布式编程的书籍相比,本书不是详细地介绍用于并行与分布式编程的工具的使用,而是从分析并行与分布式编程中固有的问题入手,并紧紧围绕这些问题,从程序体系结构的角度系统地提出了多种解决方案及模型。它除了能够帮助我们了解用于并行与分布式编程的一些技术和开发工具之外,其显著特点在于书中提出了支持并行与分布式编程的软件组织方法,使我们能够从整体上把握并行与分布式编程的关键。这一点无论对编程人员还是软件设计师都是至关重要的。
本书的翻译人员由国防科技大学计算机学院并行与分布式计算方向的研究人员组成,他们都参加过国家“863”重点课题的研究工作,具备丰富的理论和实践经验。
非常感谢CAMERON HUGHES和TRACEY HUGHES为我们带来一本如此优秀的著作,我们从本书中学到很多以前想学而没有学到的东西,极大地拓宽了我们的视野。如果你正在进行并行或分布式软件开发,或者希望进行并行或分布式软件开发,那么,本书必定是一本不可多得的参考书籍。
本书主要由肖和平、张杰良翻译。参加本书翻译的还有方小永、张绪冰、曲向丽、李磊、李蕾等。全书最后由张杰良统稿。Be Flying工作室负责人肖国尊负责本书的译员组织与翻译质量和进度的控制。由于我们的水平有限,错误与不到位之处在所难免。敬请广大读者提供反馈意见,读者可以将意见e-mail至be_flying@sohu.com,我们会仔细查阅读者发来的每一封邮件,以求进一步提高今后翻译的质量。
译者
2003年12月28日下午
序言回到顶部↑
本书为使用C++语言的分布式和并行编程提供了体系结构上的方法,对C++语言的标准库、算法以及容器类在分布式和并行环境中如何运转进行了特别关注,对通过类库和函数库扩展C++语言,以实现分布式和并行编程任务的方法进行了解释,强调了对于多线程C++语言如何与新的POSIX和单一UNIX标准协同工作。同样本书也讨论了将C++语言可执行代码与其他语言的可执行代码结合起来,实现分布式或者并行编程问题多语言的解决方法,并且介绍了几种支持并行和分布式编程的软件组织方法。
本书示范了如何排除并行操作中的基本障碍,探讨了新兴的并行化思想。本书中我们关注的核心不是优化技术、硬件细节、性能比较或者试图将并行编程技术应用到复杂的科学或数学算法中;而是关注于如何组织计算机程序和软件系统以充分发挥并行化的优势。此外,我们还会让读者熟悉解决某些分布式或并行编程固有问题的多范例(multiparadigm)方法。有效解决这些问题通常要求综合采用几种软件设计和工程方法。例如,我们采用面向对象编程技术来解决数据竞争和同步问题。我们使用面向agent的体系结构来处理多进程和多线程的管理。黑板(blackboard)方法则用来使流出的通信量最小。除了面向对象、面向agent和面向人工智能的编程技术外,我们还使用参数化编程技术来实现适合于需要并发操作的通用算法(generalized algorithm)。我们开发不同规模和形式的软件的经历使我们相信:成功的软件设计和实现要求通用性。本书中我们提出的建议、思想和解决方法正是我们这些经历的体现。
并行和分布式编程的挑战
编写并行和分布式程序存在三个基本的挑战,它们分别是:
(1)确认问题领域的环境中存在的固有并行性。
(2)将软件适当地分成两个或多个任务,这些任务可以在同一时刻执行,以完成所需的并行性。
(3)协调上述过程中所分隔的任务,使软件正确高效地运行,从而达到预期目的。
对于并行操作,这三个挑战中会有下述障碍:
数据竞争 死锁检测
部分失效 延迟
死锁 通信失效
终止检测 缺少全局状态
多时钟问题 协议不匹配
定位错误 缺少集中资源分配
本书解释了这些障碍是什么、它们为什么发生以及如何管理它们。
本书示范了如何排除并行操作中的基本障碍,探讨了新兴的并行化思想。本书中我们关注的核心不是优化技术、硬件细节、性能比较或者试图将并行编程技术应用到复杂的科学或数学算法中;而是关注于如何组织计算机程序和软件系统以充分发挥并行化的优势。此外,我们还会让读者熟悉解决某些分布式或并行编程固有问题的多范例(multiparadigm)方法。有效解决这些问题通常要求综合采用几种软件设计和工程方法。例如,我们采用面向对象编程技术来解决数据竞争和同步问题。我们使用面向agent的体系结构来处理多进程和多线程的管理。黑板(blackboard)方法则用来使流出的通信量最小。除了面向对象、面向agent和面向人工智能的编程技术外,我们还使用参数化编程技术来实现适合于需要并发操作的通用算法(generalized algorithm)。我们开发不同规模和形式的软件的经历使我们相信:成功的软件设计和实现要求通用性。本书中我们提出的建议、思想和解决方法正是我们这些经历的体现。
并行和分布式编程的挑战
编写并行和分布式程序存在三个基本的挑战,它们分别是:
(1)确认问题领域的环境中存在的固有并行性。
(2)将软件适当地分成两个或多个任务,这些任务可以在同一时刻执行,以完成所需的并行性。
(3)协调上述过程中所分隔的任务,使软件正确高效地运行,从而达到预期目的。
对于并行操作,这三个挑战中会有下述障碍:
数据竞争 死锁检测
部分失效 延迟
死锁 通信失效
终止检测 缺少全局状态
多时钟问题 协议不匹配
定位错误 缺少集中资源分配
本书解释了这些障碍是什么、它们为什么发生以及如何管理它们。
相关资源回到顶部↑
· 【推荐】众多高校学子口口相传,他们共同的选择--华清远见嵌入式学院(嵌入式Linux就业课程、3G手机开发就业课程,通过入学测试即签100%就业协议,4个月集中实训,世界500强企业成功就业保障!!!)· 【亚嵌教育 嵌入式培训专家】(嵌入式培训,嵌入式Linux培训,ARM培训,Linux培训,3G培训,Android培训,WINCE培训,DSP培训,FPGA培训,嵌入式就业培训)
· 程序员的7种武器(正则表达式、编程语言、数据库、算法、软件调试、开发环境)
· C/C++ 经典著作(《C专家编程》《C++ Templates中文版》《C和指针 》《C陷阱与缺陷》《C++沉思录》)








点击看大图





加载中...

