实例介绍
C++ Concurrency in Action中文 PDF清晰版 本书是并发和多线程机制指导书籍(基于C++11标准)。 从最基本的 std::thread std::mutex 和 std::async 的使用, 到 复杂的原子操作和内存模型。
62基十锁的并发数据结构 1.10.2 6.3基于锁设计更加复杂的数据结构 1.10.3 64本章总结 1.10.4 第7章无锁并发数据结构设计 1.11 7.1定义和意义 1.11.1 7.2尤锁数据结构的例」 1.11.2 7.3对于设计无锁数据结构的指导建议 1.11.3 7.4本章总结 1.11.4 第8章并发代码设计 1.12 8.1线程间划分工作的技术 1.12.1 8.2如何让数据紧凑? 1.122 8.3为多线程性能设计数据结构 1.12.3 8.4设计并发代码的注意事项 1.124 8.5在实践中设计并发代码 1.125 86本章总结 1.126 第9章高级线程管理 1.13 9.1线程池 1.13.1 92中断线程 1.13.2 93本章总结 1.13.3 第10章多线程程序的测试和调试 1.14 10.1与并发相关的错误类型 1.14.1 10.2定位并发错误的技术 1.14.2 10.3本章总结 1.14.3 附录AC++11言特性简明参考(部分) 1.15 A.1右值引用 1.15.1 A.2删除函数 1.152 A.3默认函数 1.153 A.4常量表达式函数 1.154 A.5 Lambda函数 1.155 A.6变参模板 1.156 A.7自动推导变量类 1.15.7 A.8线程本地变量 1.158 A.9本章总结 1.159 附录B并发库简要对比 1.16 附录C消息传递框架与完整的ATM示例 1.17 附录DC++线程类库参考 1.18 D.1 chrono头文件 1.18.1 D.2 condition variab|e头文件 1.18.2 D.3 atomic头文件 1.18.3 D.4 future头文件 1.18.4 D.5 mutex头文件 1.18.5 D.6rato头文件 1.18.6 D.7 thread头文件 1.18.7 资源 1.19 4 C++ Concurrency In Action Practical Multithreading 作者: Anthony Wi|iams ●译者:陈晓伟 本书概述 作为对《C++ Concurrency in Action》的中文翻译。 本书是基丁C++11新标准的并发和多线程编程深度指南。 从std: thread、std; mutex、std;秈 uture和std;asynη等基础癸的仗用,到内存模型和原子操作、基于锁和无锁数据 结构的构建,扩展到并行算法、线程管理,最后还介绍了多线程代码的测试工作。 本书的附录部分还对C十+11新语言特性中与多线程相关的项目进行了简要的介绍,并提供了C++11线程厍的完整参 考 木书遹合于需要深入了解C++多线程开发的读者,以及使用C++进行各类软件开发的开发人员、测试人员。 对于仗用第三方线稈库的读者,也可以从本书后面的章节中了解到相关的拦引和技巧 同吋,本书还可以作为C++11线程库的参考工具书。 书与作者 Anthony Williams是BS|C++小维的成员,拥有10多年C+应用经验 如◇多核芯处理器使用的越来越普遍。C++11标准攴持多线程,这航需要程序员掌握多线程绽程的原则、技术和新 语言中的并发特性,确保自己处于时代前沿 无论你的C十+技术如何,本书会指引你使用C++11写出健壮和优雅的多线程应用。本书将会探讨线程的内存模 型,新的多线程库,启动线程和同步工具。在这个过程中,我们会了解并发程序中较为煉手的一些问题 内容的大休结构: ●C++11编稈 多核芯编程 ●简单例子用于学习,复杂例子用于实践 本书是为C++程序员所写,同僚中可能有人对并发还没什么了解,估计也有人已绎仗用其他语言、AP或平台写过 多线程稈序。不过,在看本书的时候,你们都在同一“起跑线”上 访问本书论坛曼宁-C++ Concurrency in Action可获取免费试读章节电子书。 木书相关 github翻译地址:htts:/! github. com/xiaowei Chen/Cpp_ Concurrency In Action gⅰ ibook在线阅读:htp:/ chenxiaowei. gitbooks. io/cpp concurrency in action 书中源码:htps:/github.com/bsmr-c-cpp/Cpp-Concurrency-in-Action 5>c++11/14:http://www.bogotobogo.com/cplusplus/c11 前言 我与多线稈的邂逅是在毕业后的第一份工作中。那时我们正在写一个填充数据库的稈序。不过,需要处理的数据量 很大,每条记录都是独立的,并且需要在插入数据库之前,对数据量进行合理分配。为了充分利用10核 ULtraS PARC CPU( Ultra scalable processor architecture,终极可扩充处理器架构(大端),我们使用了多线程 每个线程处理自己所要记录的数据。我们使用C++和POSX线程库完成编码,也犯了一些错误一一当时,多线程对 于我们来说是一个新事物——不过,最后我们还是完成了。也是在做这个项目的时候,我开始注意C++标准委员会 和刚刚发布的C十+标准 我对多线稈和并发有着浓厚的兴趣。虽然,别人觉得多线稈和并发难用、复杂,还会让代码出现各种各样的问题, 不过,在我看米这是一种强有力的工具,能让你充分仗用硬件资源,让你的稈序运行的更快。 从那以后,我川始使用多线程和并发在单核机器上对应用性能和响应吋间进行改善。这里,多线程可以帮助你隐藏 些耗时的操作,比如O操作。同时,我也开始学小在操作系统级别上使用多线程,并且了解 Intel c尸U如何处理 任务切换。 同时,对C++的兴趣让我与ACCU有了联系,之后是Bs(英国标准委员会)中的C十+标准委员会,运有 Boost。乜是 囚为兴趣的原,我参与了Boos线程库的初期开发工作,虽然初期版木己经被开发者们放弃,但是我抓住了这次 机会。直到现在,我依然是Boos线程库的主要开发者和维护者 作为C++标准委员会的一员,对现有标准的缺陷的和不足进行改善,并为新标准提出建议(新标准命名为C++0x是希 望它能在2009年发布,不过最后因为2011年才发布,所以官方命名为C++11)。我也参与很多BS的工作,并且我 也为自己的建议起草建议书。当委员会将多线程提上C++标准的日程时,我高兴得差点飞起来,囚为我起草及合著 的多线程和并发相关的草案,将会成为新标准的一部分。新标准将我(计算机相关)的两大兴趣爱好——C++和多线 程—一结合起来,想想还有点小激动。 本书旨在教会其他C+开发者如何安全、高效地使用C++11线程库。我对C++和多线程的热爱,希望你也能感受得 封面图片介绍 本书的封面图片的标题是“日本女性的着装"( Habit of a Lady of Japan)。这张图源自 Thomas Jefferys所著的《不同 民族服饰的收藏》(co∥ ection of the Dress of different Nations川1第四卷(大概在1757年到1772年间出版) Thomas收集的服饰包罗万象,他的绘画优美而又细腻,对欧洲戏居服装没计产生了长达200多年的影响。服的中 包含着一个文明的过去和现在,不同时代中各个国家的习俗通过不同的服饰栩栩如生地呈现在伦敦剧院的观众面 前 从上个世纪以来,着裝风格已经发生了很多变化,各个国家和区域之间巨大的差异逐渐消大。现在已经很难分辨出 不同洲不同地区的人们的着装差异。或许,我们放弃了这种文化上的差异,得到的却是更加丰富多彩的个人生活 或者说是一种更加多样有趣、更快节奏的科技牛活 在各神计算机图书铺大盖地、让人难以分辨的吋代, Manning出版社正是为了赞美计算机行业中的创新性和廾拓 性,才选用了这个重现两个世纪之前丰富多样的地域风情的图片 【1】《 iPhone与Pad开发实成》使用了书中的另张图片,感兴趣的同学可以去图灵社区进行试读(只免费提供 第1章内容),本章翻译复制了这本书翻译的部分内容 关于这本书 本书是并发和多线稈机刽指导书籍(基于C++11标准)。从最基本的std: thread std: mutex和std; async的仗用,到 复杂的原子操作和内存模型 路线图 前4章,介绍了标准库提供的各种库工具,展示了仗用方法。 第5章,涵盖了底层內存模型和原子操作的实际情况,包括原子操作如何对执行顺序进行限制(这章标志着介绍部分 的结束) 第6、7章,开始讨论高级主题,如何使用基本工具去枃建复杂的数捱结杓——第6章是基于嶺的数据结枃,第7章 是无锁数据结构。 第8章,对设计多线稈代码给了一些指导意见,覆盖了性能问题和并行算法。 第9章,线程管理——线程池,工作队列和中断揲作 第10章,测试和调试——Bug类型,定位Bug的技巧,以及如何进行测试等等。 附录,包括新的语言特性的简要描述,主要是与多线程相关的特性,以及在第4章中提到的消息传递库的实现细节 和C++11线程库的完整的参考。 谁应该读这本书 如果你王在用C++写一个多线程程序,你应该阅读本书。如果你正在使用C++枟准库中新的多线程工具,你可以从 本书中得到一些指导意见。如果你正在使用其也线程库,后面章节里的建议和技术指导也很值得一看。 阅读木书需要你有较好的℃++基础;虽然,关于多线程编程的知识或者经验不是必须的,不过这些经验可能有用 如何使用这本书 如果从来没有写过多线程代码,我建议你从头到尾阅读本书;不过,可以跳过第5章中的较为细节的部分。第7章内 容依赖于第5章中的內容,因此,如果跳过∫第5章,应该保证在读筼7章时,已经读过第5章 如果没有用过C++11的工具,为了跟上这本书的进度,可以先阅读一下附录。新工具的使用在文本中已经标注出 来,不过,当遇到一些没见过的工具时,可以随时回看附录。 即使有不同环境下写多线稈代码的经验,开始的章节仍有必要浏览一下,这样就能清俎圯知道,你所熟知的工具在 新的C艹+标准中对应了哪些工具。如果使用原子变量去做一些底层工作,第5章必须阅读。第8章,有关C++多线程 的异常和安全性的内容很值得一看。如果你对某些关键词比较感兴赵,索引和日求能够帮你快速找到相关的内容 你可能喜欢回顾主要的章节,并用自己的方式阅读示例代码。虽然你已经了解C++线程库,但附录D还是很有用 例如,查找每个类和函数的细节 代码公约和下载 为了区分普通文本,清单和正文中的中的所有代码都采用像这样的固定宽度的字体。许多清单都伴随着代码注释,突出 显示重要的概念。在某些情况下,你可以通过页下给岀的快捷链接进行查阅 本书所有实例的源代妈,可不出版帝的网站上进行下载:www.manning.com/cplusplusconcurrencyinaction 软件需求 使用书中的代妈,可能需要个较新的C++编译器(婁支持C++11诘言的特性(见附录A),还需要C十+支持标准线程 库 写木书的时候,g+是唯一实现标准线程库的编译器(尽管 Microsoft visual studio2011 preview中也有实现)。 g++4.3发布时添加了线程库,并且在随后的发布版木中进行扩展。g++4.3也支持部分C++11语言特性,更多特性 的支持在后续发布版木中也有添加。更多细节请参考g+C++11的状态页面[1 Microsoft visual studio2010支持部分C++11特性,例如:右值引用和 lambda函数,但是没有实现线程库。 我的公司 Software solutions ltd,销售C++11准线程库的完整实现,其可以使用在 Microsoft visual studio2005, Microsoft visual studio2008, Microsoft visual studio2010,以及各种g++版本上[2]。这个线程库也可以用来测试 本书中的例子。 Boost线程库③]提供的AP|,以及可移植到多个平台。本书中的大多数例子将std::替换为bocs::,再# include引 用适当的头文件,就能使用Boos线程库来运行。还有部分工具还不支持(例如sta: async)或在 Boost线程库中有着 不同名字(例如:bost: unique_ future) 作者在线 购头C++ Concurrency in Actio就能访问曼宁( Manning Publications)的私人网络论坛,在邦里可以对本书做一些评 论,问一些技术问题,获得作者或其他读者的帮助。为了能够访问论坛和订阅它的内容,在浏览器地址中输入 Www.manning.com/CPlusPlusConcurrencyinAction后,页面将告诉你如何泮册之后访问论坛,你能获得什么样的 帮助,还有论坛中的一些规则 曼宁俣证为木书的读者提供互相交流,以及和作者交流的场所。虽然曼宁自愿维护木书的论坛,但不保证这样的场 所不会收取任何的费用。所以,建议你可以尝试提一些有挑战性的问题给作者,免得这样的地方白白浪费 在本书印刷时,就可以通过 Interne访问作者的在线论坛和之前讨论的文字记录 [1GnuCompilerCollectionC++ox/c++11statuspagehttp:/igcc.gnu.org/projects/cxxox.html 12]Thejust:threadimplementationoftheC++StandardThreadLibraryhttp://www.stdthread.co.uk [3TheBoostC++librarycollectionhttp://www.boostorg 【实例截图】
【核心代码】
标签:
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论