- 在线时间
- 686 小时
- 最后登录
- 2024-7-18
- 注册时间
- 2014-6-30
- 听众数
- 148
- 收听数
- 1
- 能力
- 1 分
- 体力
- 17867 点
- 威望
- 1 点
- 阅读权限
- 200
- 积分
- 5990
- 相册
- 1
- 日志
- 0
- 记录
- 4
- 帖子
- 1003
- 主题
- 377
- 精华
- 1
- 分享
- 0
- 好友
- 877
升级   19.8% TA的每日心情 | 奋斗 2016-7-14 13:54 |
|---|
签到天数: 219 天 [LV.7]常住居民III
 群组: 2015年美赛冲刺 群组: 高等数学串讲 群组: 2014第三期英语写作 群组: SAS数据分析大赛冲刺 群组: 2015美赛优秀论文解析 |
编辑推荐) R! k, H. N6 M* G/ `) m7 M# S% n' C
《C++多核高级编程》主要内容:并发编程和同步带来的各种缺陷、陷阱和挑战,调试和测试多核编程的方法与技术,如何使川跨下台技术米利用处理器的特定特性,操作系统在多核编程中的任务,将框架类作为并发构建块加以利用的方法,如何通过使用接口类宋降低任务同步和通信的复杂性。
6 x; S6 O/ K5 ^/ z. {0 X《C++多核高级编程》适合于希望从事多核编程和多核应用程序开发的开发人员 。 ) _- u. A" @# O8 B
媒体推荐
; p: \+ Z1 Y. X适合于希望从事多核编程和多核应用程序开发的开发人员
3 I. m# K, r( i( U R. w2 `! R作者简介5 B. o- ~: T1 {! S# v+ x( I
Cameron Hughes是一名专业的软件开发人员。他是CTEST实验室的软件工程师,同时还是Youngstown州立大学的编程人员/分析师。Cameron Hughes有着超过15年的软件开发经验,参与过各种规模的软件开发工作,从商业和工业应用到航空设计和开发项目。Cameron是Cognopaedia的设计者,目前是运行在CTEST实验室的Pantheon上的GRIOT项目的领导者。Pantheon是具有24个节点的多核集群,用于多线程搜索引擎和文本提取程序的开发。
7 y- f+ V: }( P; V- r' ETracey Hughes是CTEST实验室的高级图像程序员,负责开发知识和信息的可视化软件。Tracey Hughes是利用CTEST实验室的知识可视化的M.I.N.D、C.R_A.I.G、NOFAQS等项目的主要设计人员。她经常致力于Linux开发软件。她还是GRIOT项目的小组成员。
3 e s! k! T9 \7 ]' iCameron和Tracey Hughes还是关于软件开发、多线程和并行编程方面的6本著作的作者,这6本著作是:Parallel andDistributedProgramming Using C++、Linux RapidApplicationDevelopment、Mastering the Standard C++Classes、Object-Oriented Multithreading UsingC++、Collection and Container Classes in C++和Object-OrientedI/O Using C++lostreams。 / C# e$ v" T8 l7 z
1 I0 p; c% j( B$ D 目录0 v- y+ l1 j1 y( S( w
; Z, _4 W2 F0 ^; L/ L) G; P5 V* s+ T2 w& M
序言
; }, F }0 T5 ^$ @+ i多核革命即将到来。并行处理不再是超级计算机或集群的专属领域,入门级服务器乃至基本的开发工作站都拥有硬件级和软件级并行处理的能力。问题是这对于软件开发人员意味着什么?对软件开发过程会有怎样的影响?在谁拥有速度最快的计算机的竞争中,芯片生产商更倾向于在单独的芯片上放置多个处理器,而不是提高处理器的速度。迄今为止,软件开发人员尚能依赖于新的处理器,在不对软件做出任何实际改进的情况下提高软件的速度,但是这样的情况将成为过去。为了提高总体系统性能,计算机供应商已经决定增加更多的处理器,而不是提高时钟频率。这意味着如果软件开发人员希望应用程序从下一个新的处理器受益,就必须对应用程序进行修改以利用多处理器计算机。 + g8 S$ F" V! y
尽管顺序编程和单核应用程序开发仍会有一席之地,但软件开发将向多线程和多进程转变。曾经仅被理论计算机科学家和大学学术界所关注的并行编程技术,现在正处于为大多数人所接受的过程中。多核应用程序设计和开发的思想如今成为人们关注的主流。 : k2 L6 u4 F0 _$ R: x, ?
学习多核编程 $ ?" v. h$ I( s! ~
本书使用一般软件开发人员能够理解的术语介绍多核编程的基本知识。为读者介绍了为多处理器和多线程体系结构进行编程的基础知识,对并行处理和软件并发的概念进行了实用的介绍。本书介绍的是深奥的、不易理解的并行编程技术,但将使用一种简单、可理解的方式来介绍它们。我们介绍了并发编程和同步的缺陷与陷阱以及应对之策,对多处理和多线程模型进行了直截了当的讨论。本书提供了大量的编程实例,示范了如何实现成功的多核编程。本书还包含了调试及测试多核编程的方法与技术。最后,我们示范了如何使用跨平台技术来利用处理器的具体特性。
1 |: i O3 H# }! i6 r7 j' Y不同的视角
, S) j. N3 o: i本书的内容是为对多核编程和应用程序开发有着不同切入点的广大读者设计的。本书的读者包含但不限于:
( H. U# h+ q) b- k Z( G- S2 S·库及工具制作人员
6 ]0 I* V1 _+ e9 U" O·操作系统程序员
- P& J; D" n% T·内核开发人员
) _7 G" n% R+ ?4 L3 |6 X4 M0 q·数据库服务器及应用服务器的设计人员及实现人员 : |; v; {- T6 v- ~9 K( i, j
·科学应用程序员以及使用计算密集型应用程序的用户 5 \( e4 J9 _2 b4 ?
·应用程序开发人员
; M% }+ q+ D p7 G0 P) B+ U·系统程序员
+ M+ g9 _* `3 I' E2 E0 A9 `8 t8 B! M每组人员都会从不同的视角来了解多核计算机。有些人关心的是使用自底向上的方法,需要开发利用特定硬件和特定供应商的特性的软件。对于上述人员而言,他们希望更加详尽地介绍多线程处理的知识。其他人员可能对自顶向下的方法感兴趣,他们不希望为并发任务同步或线程安全的细节费心,而是倾向于使用高级库和工具来完成工作。还有一些人需要混合使用自底向上和自顶向下的方法。本书提供了对多核编程的多种视角的介绍,涵盖了自底向上和自顶向下的方法。 0 C- A# B7 i+ C4 A' Q; o. Z5 J0 f
解决方案是多范型方法 8 K3 w* i1 X, j0 ^
首先,我们承认不是每个软件解决方案都需要多处理或多线程。有些软件解决方案通过使用顺序编程技术能够更好地实现(即使目标平台是多核的)。我们的方法是以解决方案和模型作为驱动。首先,针对问题开发出模型或解决方案。如果解决方案要求某些指令、过程或任务并发地执行,那么就决定了最好使用哪组技术。这个方法同强迫解决方案或模型去适合一些预先选择的库或开发工具的方法相反。技术应当遵从解决方案。尽管本书讨论库和开发工具,但并不偏向任何具体生产商库或工具集。尽管书中包含了利用特定硬件平台的实例,但我们依赖跨平台方法,使用POSIX标准操作系统调用和库,并且仅使用国际化C++标准所支持的C++特性。 * U0 q5 ]/ X8 m2 q1 j3 u
面对多处理和多线程中的挑战和障碍,我们倡导组件方法。主要的目的是利用框架类作为并发的构建块。框架类被面向对象互斥量(mutex)、信号量(semaphore)、管道(pipe)、队列(queue)和套接字(socket)所支持。通过使用接口类,显著降低了任务同步和通信的复杂度。在我们的多线程和多处理应用程序中,控制机制主要是agent驱动。这意味着在本书中,您将看到应用程序架构支持软件开发的多范型(multiple-paradigm)方法。
, {2 R$ |/ f4 I& n' V我们对组件实现使用面向对象编程技术,对控制机制主要使用面向agent编程技术。面向agent编程的思想有时被逻辑编程技术支持。随着处理器上可用内核数目的增加,软件开发模型将会越发地依赖面向agent编程和逻辑编程。本书包含了对软件开发的这种多范型方法的简介。 - [: |+ h( \* d
6 _+ g) ^2 J K' U: d; X
封面8 g' `1 |( U7 y; G0 D/ l
1 j( x# I4 q" G/ r3 }2 g5 O4 I1 H) Z, k, i8 b- v
* ]: Q8 g# i/ g8 p$ w
% W o# y9 L4 z6 b3 s |
zan
|