C++多核高级编程

C++多核高级编程
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: [美] ,
2010-03
版次: 1
ISBN: 9787302222743
定价: 69.80
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 561页
字数: 882千字
正文语种: 简体中文
41人买过
  •   为了提高系统总体性能,计算机厂商已经选择增加更多的处理器,而不是提高时钟频率。相应地,如果您希望应用程序能够通过使用下一代处理器提高性能,就必须为了利用多处理器计算机而对应用程序进行改写。这本非常实用的书教读者如何从顺序编程技术转移到并行和多线程编程技术,同时介绍了为多处理器和多线程架构编程的所有必备知识。
      本书的两位作者具有丰富的经验,虽然是并行处理和软件并发这些复杂的主题,但是采用了清晰、易于理解的方式来讲述它们。通过他们进行多处理和多线程模型编程的实际方法,借助大量有用的实例,演示如何成功地完成多核编程,从而使读者能够充分利用新一代多核处理器的能力。
      本书主要内容
      并发编程和同步带来的各种缺陷、陷阱和挑战
      调试和测试多核编程的方法与技术
      如何使川跨下台技术米利用处理器的特定特性
      操作系统在多核编程中的任务
      将框架类作为并发构建块加以利用的方法
      如何通过使用接口类宋降低任务同步和通信的复杂性
      本书适合于希望从事多核编程和多核应用程序开发的开发人员   CameronHughes是一名专业的软件开发人员。他是CTEST实验室的软件工程师,同时还是Youngstown州立大学的编程人员/分析师。CameronHughes有着超过15年的软件开发经验,参与过各种规模的软件开发工作,从商业和工业应用到航空设计和开发项目。Cameron是Cognopaedia的设计者,目前是运行在CTEST实验室的Pantheon上的GRIOT项目的领导者。Pantheon是具有24个节点的多核集群,用于多线程搜索引擎和文本提取程序的开发。
      TraceyHughes是CTEST实验室的高级图像程序员,负责开发知识和信息的可视化软件。TraceyHughes是利用CTEST实验室的知识可视化的M.I.N.D、C.R_A.I.G、NOFAQS等项目的主要设计人员。她经常致力于Linux开发软件。她还是GRIOT项目的小组成员。
      Cameron和TraceyHughes还是关于软件开发、多线程和并行编程方面的6本著作的作者,这6本著作是:ParallelandDistributedProgrammingUsingC++、LinuxRapidApplicationDevelopment、MasteringtheStandardC++Classes、Object-OrientedMultithreadingUsingC++、CollectionandContainerClassesinC++和Object-OrientedI/OUsingC++lostreams。 第1章新的体系结构1
    1.1什么是多核1
    1.2多核体系结构2
    1.3软件开发人员眼中的多核体系结构3
    1.3.1基本的处理器体系结构4
    1.3.2CPU(指令集)6
    1.3.3内存是关键8
    1.3.4寄存器10
    1.3.5cache11
    1.3.6主存12
    1.4总线连接13
    1.5从单核到多核13
    1.5.1多道程序设计和多处理14
    1.5.2并行编程14
    1.5.3多核应用程序的设计与实现15
    1.6小结15

    第2章4种有影响的多核设计17
    2.1AMDMulticoreOpteron19
    2.1.1Opteron的直连和HyperTransport19
    2.1.2系统请求接口和交叉开关20
    2.1.3Opteron使用NUMA结构21
    2.1.4cache以及多处理器Opteron22
    2.2SunUltraSparcT1多处理器22
    2.2.1UltraSparcT1内核24
    2.2.2CrossTalk与Crossbar25
    2.2.3DDRAM控制器和L2cache25
    2.2.4UltraSparcT1、Sun和GNUgcc编译器25
    2.3IBMCellBroadbandEngine25
    2.3.1CBE与Linux26
    2.3.2CBE内存模型27
    2.3.3对操作系统隐藏27
    2.3.4协处理器部件28
    2.4IntelCore2Duo处理器28
    2.4.1北桥和南桥29
    2.4.2Intel的PCIExpress29
    2.4.3Core2Duo的指令集29
    2.5小结30

    第3章多核编程的挑战33
    3.1什么是顺序模型33
    3.2什么是并发34
    3.3软件开发35
    3.3.1挑战1:软件分解38
    3.3.2挑战2:任务间通信43
    3.3.3挑战3:多个任务或agent对数据或资源的并发访问47
    3.3.4挑战4:识别并发执行的任务之间的关系51
    3.3.5挑战5:控制任务之间的资源争夺53
    3.3.6挑战6:需要多少个进程或线程53
    3.3.7挑战7和挑战8:寻找可靠的、可重现的调试和测试54
    3.3.8挑战9:与拥有多进程组件的设计的相关人员进行沟通55
    3.3.9挑战10:在C++中实现多处理和多线程56
    3.4C++开发人员必须学习新的库56
    3.5处理器架构的挑战57
    3.6小结57

    第4章操作系统的任务59
    4.1操作系统扮演什么角色59
    4.1.1提供一致的接口59
    4.1.2管理硬件资源和其他应用软件60
    4.1.3开发人员与操作系统的交互60
    4.1.4操作系统的核心服务63
    4.1.5应用程序员的接口66
    程序概要4-170
    程序概要4-274
    4.2分解以及操作系统的任务75
    4.3隐藏操作系统的任务77
    4.3.1利用C++抽象和封装的能力77
    4.3.2POSIXAPI的接口类78
    4.4小结85

    第5章进程、C++接口类和谓词87
    5.1多核是指多处理器87
    5.2什么是进程88
    5.3为什么是进程而不是线程88
    5.4使用posix_spawn()90
    5.4.1file_actions参数91
    5.4.2attrp参数92
    5.4.3简单的posix_spawn()示例94
    5.4.4使用posix_spawn的guess_it95
    5.5哪个是父进程,哪个是子进程99
    5.6对进程的详细讨论99
    5.6.1进程控制块100
    5.6.2进程的剖析101
    5.6.3进程状态103
    5.6.4进程是如何被调度的105
    5.7使用ps实用工具监视进程107
    5.8设置和获得进程优先级110
    5.9什么是上下文切换112
    5.10进程创建中的活动112
    5.10.1使用fork()函数调用113
    5.10.2使用exec()系统调用系列113
    5.11进程环境变量的使用116
    5.12使用system()生成新的进程117
    5.13删除进程118
    5.13.1调用exit()和abort()118
    5.13.2kill()函数119
    5.14进程资源119
    5.14.1资源的类型120
    5.14.2设置资源限制的POSIX函数121
    5.15异步进程和同步进程124
    5.16wait()函数调用125
    5.17谓词、进程和接口类127
    5.18小结131

    第6章多线程133
    6.1什么是线程133
    6.1.1用户级线程和内核级线程134
    6.1.2线程上下文136
    6.1.3硬件线程和软件线程138
    6.1.4线程资源138
    6.2线程和进程的比较139
    6.2.1上下文切换139
    6.2.2吞吐量139
    6.2.3实体间的通信139
    6.2.4破坏进程数据140
    6.2.5删除整个进程140
    6.2.6被其他程序重用140
    6.2.7线程与进程的关键类似和差别140
    6.3设置线程属性142
    6.4线程的结构143
    6.4.1线程状态144
    6.4.2调度和线程竞争范围145
    6.4.3调度策略和优先级147
    6.4.4调度分配域148
    6.5简单的线程程序148
    6.6创建线程150
    6.6.1向线程传递参数151
    6.6.2结合线程153
    6.6.3获得线程id154
    6.6.4使用pthread属性对象155
    6.7管理线程159
    6.7.1终止线程159
    6.7.2管理线程的栈168
    6.7.3设置线程调度和优先级171
    6.7.4设置线程的竞争范围175
    6.7.5使用sysconf()175
    6.7.6线程安全和库177
    6.8扩展线程接口类179
    6.9小结187

    第7章并发任务的通信和同步189
    7.1通信和同步189
    7.1.1依赖关系190
    7.1.2对任务依赖进行计数193
    7.1.3什么是进程间通信195
    7.1.4什么是线程间通信215
    7.2对并发进行同步223
    7.2.1同步的类型224
    7.2.2同步对数据的访问224
    7.2.3同步机制230
    7.3线程策略方法250
    7.3.1委托模型251
    7.3.2对等模型253
    7.3.3生产者-消费者模型254
    7.3.4流水线模型255
    7.3.5用于线程的SPMD和MPMD256
    7.4工作的分解和封装258
    7.4.1问题陈述258
    7.4.2策略258
    7.4.3观察259
    7.4.4问题和解决方案259
    7.4.5流水线的简单agent模型实例260
    7.5小结264

    第8章PADL和PBS:应用程序设计方法265
    8.1为大规模多核处理器设计应用程序265
    8.2什么是PADL268
    8.2.1第5层:应用程序架构选择271
    8.2.2第4层:PADL中的并发模型281
    8.2.3第3层:PADL的实现模型284
    8.3谓词分解结构306
    8.3.1示例:Guess-My-Code游戏的PBS307
    8.3.2将PBS、PADL和SDLC联系起来307
    8.3.3对PBS进行编码308
    8.4小结308

    第9章对要求并发的软件系统进行建模311
    9.1统一建模语言311
    9.2对系统的结构进行建模313
    9.2.1类模型313
    9.2.2类的可视化315
    9.2.3对属性和服务进行排序320
    9.2.4类的实例的可视化322
    9.2.5模板类的可视化324
    9.2.6显示类与对象的关系325
    9.2.7接口类的可视化329
    9.2.8交互式对象的组织331
    9.3UML与并发行为332
    9.3.1协作对象332
    9.3.2使用进程与线程的多任务与多线程334
    9.3.3对象间的消息序列335
    9.3.4对象的活动337
    9.3.5状态机339
    9.4整个系统的可视化344
    9.5小结345

    第10章并行程序的测试和逻辑容错347
    10.1能否跳过测试347
    10.2测试中必须检查的5个并发挑战348
    10.3失效:缺陷与故障导致的结果350
    10.3.1基本的测试类型350
    10.3.2缺陷排除与缺陷存活351
    10.4如何对并行程序实现缺陷排除351
    10.4.1问题陈述352
    10.4.2简单策略和粗解决方案模型352
    10.4.3使用PADL第5层的修正的解决方案模型352
    10.4.4agent解决方案模型的PBS353
    10.5什么是标准软件工程测试357
    10.5.1软件验证与确认357
    10.5.2代码不能正常工作该怎么办358
    10.5.3什么是逻辑容错362
    10.5.4谓词异常和可能世界367
    10.5.5什么是模型检测368
    10.6小结368

    附录A并发设计使用的UML371
    附录B并发模型379
    附录C线程管理的POSIX标准393
    附录D进程管理的POSIX标准535
  • 内容简介:
      为了提高系统总体性能,计算机厂商已经选择增加更多的处理器,而不是提高时钟频率。相应地,如果您希望应用程序能够通过使用下一代处理器提高性能,就必须为了利用多处理器计算机而对应用程序进行改写。这本非常实用的书教读者如何从顺序编程技术转移到并行和多线程编程技术,同时介绍了为多处理器和多线程架构编程的所有必备知识。
      本书的两位作者具有丰富的经验,虽然是并行处理和软件并发这些复杂的主题,但是采用了清晰、易于理解的方式来讲述它们。通过他们进行多处理和多线程模型编程的实际方法,借助大量有用的实例,演示如何成功地完成多核编程,从而使读者能够充分利用新一代多核处理器的能力。
      本书主要内容
      并发编程和同步带来的各种缺陷、陷阱和挑战
      调试和测试多核编程的方法与技术
      如何使川跨下台技术米利用处理器的特定特性
      操作系统在多核编程中的任务
      将框架类作为并发构建块加以利用的方法
      如何通过使用接口类宋降低任务同步和通信的复杂性
      本书适合于希望从事多核编程和多核应用程序开发的开发人员
  • 作者简介:
      CameronHughes是一名专业的软件开发人员。他是CTEST实验室的软件工程师,同时还是Youngstown州立大学的编程人员/分析师。CameronHughes有着超过15年的软件开发经验,参与过各种规模的软件开发工作,从商业和工业应用到航空设计和开发项目。Cameron是Cognopaedia的设计者,目前是运行在CTEST实验室的Pantheon上的GRIOT项目的领导者。Pantheon是具有24个节点的多核集群,用于多线程搜索引擎和文本提取程序的开发。
      TraceyHughes是CTEST实验室的高级图像程序员,负责开发知识和信息的可视化软件。TraceyHughes是利用CTEST实验室的知识可视化的M.I.N.D、C.R_A.I.G、NOFAQS等项目的主要设计人员。她经常致力于Linux开发软件。她还是GRIOT项目的小组成员。
      Cameron和TraceyHughes还是关于软件开发、多线程和并行编程方面的6本著作的作者,这6本著作是:ParallelandDistributedProgrammingUsingC++、LinuxRapidApplicationDevelopment、MasteringtheStandardC++Classes、Object-OrientedMultithreadingUsingC++、CollectionandContainerClassesinC++和Object-OrientedI/OUsingC++lostreams。
  • 目录:
    第1章新的体系结构1
    1.1什么是多核1
    1.2多核体系结构2
    1.3软件开发人员眼中的多核体系结构3
    1.3.1基本的处理器体系结构4
    1.3.2CPU(指令集)6
    1.3.3内存是关键8
    1.3.4寄存器10
    1.3.5cache11
    1.3.6主存12
    1.4总线连接13
    1.5从单核到多核13
    1.5.1多道程序设计和多处理14
    1.5.2并行编程14
    1.5.3多核应用程序的设计与实现15
    1.6小结15

    第2章4种有影响的多核设计17
    2.1AMDMulticoreOpteron19
    2.1.1Opteron的直连和HyperTransport19
    2.1.2系统请求接口和交叉开关20
    2.1.3Opteron使用NUMA结构21
    2.1.4cache以及多处理器Opteron22
    2.2SunUltraSparcT1多处理器22
    2.2.1UltraSparcT1内核24
    2.2.2CrossTalk与Crossbar25
    2.2.3DDRAM控制器和L2cache25
    2.2.4UltraSparcT1、Sun和GNUgcc编译器25
    2.3IBMCellBroadbandEngine25
    2.3.1CBE与Linux26
    2.3.2CBE内存模型27
    2.3.3对操作系统隐藏27
    2.3.4协处理器部件28
    2.4IntelCore2Duo处理器28
    2.4.1北桥和南桥29
    2.4.2Intel的PCIExpress29
    2.4.3Core2Duo的指令集29
    2.5小结30

    第3章多核编程的挑战33
    3.1什么是顺序模型33
    3.2什么是并发34
    3.3软件开发35
    3.3.1挑战1:软件分解38
    3.3.2挑战2:任务间通信43
    3.3.3挑战3:多个任务或agent对数据或资源的并发访问47
    3.3.4挑战4:识别并发执行的任务之间的关系51
    3.3.5挑战5:控制任务之间的资源争夺53
    3.3.6挑战6:需要多少个进程或线程53
    3.3.7挑战7和挑战8:寻找可靠的、可重现的调试和测试54
    3.3.8挑战9:与拥有多进程组件的设计的相关人员进行沟通55
    3.3.9挑战10:在C++中实现多处理和多线程56
    3.4C++开发人员必须学习新的库56
    3.5处理器架构的挑战57
    3.6小结57

    第4章操作系统的任务59
    4.1操作系统扮演什么角色59
    4.1.1提供一致的接口59
    4.1.2管理硬件资源和其他应用软件60
    4.1.3开发人员与操作系统的交互60
    4.1.4操作系统的核心服务63
    4.1.5应用程序员的接口66
    程序概要4-170
    程序概要4-274
    4.2分解以及操作系统的任务75
    4.3隐藏操作系统的任务77
    4.3.1利用C++抽象和封装的能力77
    4.3.2POSIXAPI的接口类78
    4.4小结85

    第5章进程、C++接口类和谓词87
    5.1多核是指多处理器87
    5.2什么是进程88
    5.3为什么是进程而不是线程88
    5.4使用posix_spawn()90
    5.4.1file_actions参数91
    5.4.2attrp参数92
    5.4.3简单的posix_spawn()示例94
    5.4.4使用posix_spawn的guess_it95
    5.5哪个是父进程,哪个是子进程99
    5.6对进程的详细讨论99
    5.6.1进程控制块100
    5.6.2进程的剖析101
    5.6.3进程状态103
    5.6.4进程是如何被调度的105
    5.7使用ps实用工具监视进程107
    5.8设置和获得进程优先级110
    5.9什么是上下文切换112
    5.10进程创建中的活动112
    5.10.1使用fork()函数调用113
    5.10.2使用exec()系统调用系列113
    5.11进程环境变量的使用116
    5.12使用system()生成新的进程117
    5.13删除进程118
    5.13.1调用exit()和abort()118
    5.13.2kill()函数119
    5.14进程资源119
    5.14.1资源的类型120
    5.14.2设置资源限制的POSIX函数121
    5.15异步进程和同步进程124
    5.16wait()函数调用125
    5.17谓词、进程和接口类127
    5.18小结131

    第6章多线程133
    6.1什么是线程133
    6.1.1用户级线程和内核级线程134
    6.1.2线程上下文136
    6.1.3硬件线程和软件线程138
    6.1.4线程资源138
    6.2线程和进程的比较139
    6.2.1上下文切换139
    6.2.2吞吐量139
    6.2.3实体间的通信139
    6.2.4破坏进程数据140
    6.2.5删除整个进程140
    6.2.6被其他程序重用140
    6.2.7线程与进程的关键类似和差别140
    6.3设置线程属性142
    6.4线程的结构143
    6.4.1线程状态144
    6.4.2调度和线程竞争范围145
    6.4.3调度策略和优先级147
    6.4.4调度分配域148
    6.5简单的线程程序148
    6.6创建线程150
    6.6.1向线程传递参数151
    6.6.2结合线程153
    6.6.3获得线程id154
    6.6.4使用pthread属性对象155
    6.7管理线程159
    6.7.1终止线程159
    6.7.2管理线程的栈168
    6.7.3设置线程调度和优先级171
    6.7.4设置线程的竞争范围175
    6.7.5使用sysconf()175
    6.7.6线程安全和库177
    6.8扩展线程接口类179
    6.9小结187

    第7章并发任务的通信和同步189
    7.1通信和同步189
    7.1.1依赖关系190
    7.1.2对任务依赖进行计数193
    7.1.3什么是进程间通信195
    7.1.4什么是线程间通信215
    7.2对并发进行同步223
    7.2.1同步的类型224
    7.2.2同步对数据的访问224
    7.2.3同步机制230
    7.3线程策略方法250
    7.3.1委托模型251
    7.3.2对等模型253
    7.3.3生产者-消费者模型254
    7.3.4流水线模型255
    7.3.5用于线程的SPMD和MPMD256
    7.4工作的分解和封装258
    7.4.1问题陈述258
    7.4.2策略258
    7.4.3观察259
    7.4.4问题和解决方案259
    7.4.5流水线的简单agent模型实例260
    7.5小结264

    第8章PADL和PBS:应用程序设计方法265
    8.1为大规模多核处理器设计应用程序265
    8.2什么是PADL268
    8.2.1第5层:应用程序架构选择271
    8.2.2第4层:PADL中的并发模型281
    8.2.3第3层:PADL的实现模型284
    8.3谓词分解结构306
    8.3.1示例:Guess-My-Code游戏的PBS307
    8.3.2将PBS、PADL和SDLC联系起来307
    8.3.3对PBS进行编码308
    8.4小结308

    第9章对要求并发的软件系统进行建模311
    9.1统一建模语言311
    9.2对系统的结构进行建模313
    9.2.1类模型313
    9.2.2类的可视化315
    9.2.3对属性和服务进行排序320
    9.2.4类的实例的可视化322
    9.2.5模板类的可视化324
    9.2.6显示类与对象的关系325
    9.2.7接口类的可视化329
    9.2.8交互式对象的组织331
    9.3UML与并发行为332
    9.3.1协作对象332
    9.3.2使用进程与线程的多任务与多线程334
    9.3.3对象间的消息序列335
    9.3.4对象的活动337
    9.3.5状态机339
    9.4整个系统的可视化344
    9.5小结345

    第10章并行程序的测试和逻辑容错347
    10.1能否跳过测试347
    10.2测试中必须检查的5个并发挑战348
    10.3失效:缺陷与故障导致的结果350
    10.3.1基本的测试类型350
    10.3.2缺陷排除与缺陷存活351
    10.4如何对并行程序实现缺陷排除351
    10.4.1问题陈述352
    10.4.2简单策略和粗解决方案模型352
    10.4.3使用PADL第5层的修正的解决方案模型352
    10.4.4agent解决方案模型的PBS353
    10.5什么是标准软件工程测试357
    10.5.1软件验证与确认357
    10.5.2代码不能正常工作该怎么办358
    10.5.3什么是逻辑容错362
    10.5.4谓词异常和可能世界367
    10.5.5什么是模型检测368
    10.6小结368

    附录A并发设计使用的UML371
    附录B并发模型379
    附录C线程管理的POSIX标准393
    附录D进程管理的POSIX标准535
查看详情
相关图书 / 更多
C++多核高级编程
C++边做边学
冯玉芬;周树功;母景琴;詹胜
C++多核高级编程
C++程序设计基础教程 第2版
刘厚泉 李政伟 葛欣
C++多核高级编程
C++编程这样学
胡芳
C++多核高级编程
C++程序设计案例教程(线上线下混合版)
杨卫明;李晓虹
C++多核高级编程
C++之旅(第3版)
[美]Bjarne Stroustrup(本贾尼 斯特劳斯特鲁普
C++多核高级编程
C++20代码整洁之道:可持续软件开发模式实践(原书第2版)
[德]斯蒂芬·罗斯(Stephan Roth)
C++多核高级编程
C++ Core Guidelines解析
杨文波 译;[德]赖纳·格林(Rainer Grimm)著 吴咏炜;何荣华;张云潮
C++多核高级编程
C++开发案例精讲
杨国兴 著
C++多核高级编程
C++程序设计实践教程(新国标微课版)
马光志
C++多核高级编程
C++程序设计基础与实践
牛园园;韩洁琼;李晓芳;吴成宇
C++多核高级编程
C++语言设计教程(计算机专业十四五精品教材)
苏菲、王芬、朱腾 编
C++多核高级编程
C++程序设计基础教程
丁卫平 程学云 陈文兰 主编;任红建 沈晓红 文万志 副主编
您可能感兴趣 / 更多
C++多核高级编程
NASA火星探索简史
[美]皮尔斯·比佐尼
C++多核高级编程
有效地招聘:掌握面试策略、背景调查和入职培训 职场领导力提升系列丛书
[美],保罗·法尔科内(Paul,Falcone)
C++多核高级编程
永生的海拉:划时代的癌细胞和时代洪流下的细胞主人一家 外国现当代文学 [美]丽贝卡·思科鲁特 新华正版
[美]丽贝卡·思科鲁特
C++多核高级编程
进阶书系-思考,好与坏:如何用哲学拯救你的逻辑与理性
[美]史蒂文·纳德勒 [美]劳伦斯·夏皮罗
C++多核高级编程
漫长的告别(雷蒙德·钱德勒无可争议的代表作,全新修订译本)
[美]雷蒙德·钱德勒
C++多核高级编程
会说话的数据:人人都需要的数据思维
[美]本·琼斯 (Ben Jones)
C++多核高级编程
公益让广告收益更大:公益广告在创意和甲方之间的平衡艺术
[美]伊多·塔沃里,[美]索尼娅·普雷拉特,[美]雪莉·罗恩
C++多核高级编程
丧钟为谁而鸣(是海明威广为流传的长篇代表之一,文学与历史的宿命相遇)
[美]欧内斯特·海明威
C++多核高级编程
永别了,武器(海明威自传性的长篇小说,入选美国现代文库 “二十世纪百佳英文小说”)
[美]欧内斯特·海明威
C++多核高级编程
海明威短篇小说选 (诺贝尔文学奖得主海明威短篇小说代表作,完美呈现其简净朴素的写作风格)
[美]欧内斯特·海明威
C++多核高级编程
甲骨文丛书·常识:一部政治史
[美]索菲娅·罗森菲尔德
C++多核高级编程
流动的盛宴(海明威告别尘世的“文学回忆录”,“迷惘的一代”的文学经典)
[美]欧内斯特·海明威