EDG都夺得S11冠军了,你不会还不知道英雄联盟是用C++写的吧?(文末送书)

C语言与CPP编程

共 4832字,需浏览 10分钟

 ·

2022-01-02 10:58

11月7日,万众瞩目的2021年《英雄联盟》全球总决赛(简称S11)终于正式落下帷幕,来自LPL的中国战队EDG鏖战五局,在对手2-1拿下赛点的情况下,总比分3-2强势逆转,战胜了卫冕冠军、韩国战队DK。

数亿人蹲守直播、万人喊楼、朋友圈立Flag不停.....我们可以看出这款电子游戏有多么的火爆,而这离不开它无可挑剔的游戏设计。

那么,你知道《英雄联盟》这款游戏主要是用什么语言编写的吗?

其实,LOL这个大型联机对战游戏是以C++作为底层代码完成的。它完美地利用了C++的高性能和易用性,其3D引擎就是基于C++开发的。

纵观市面上的游戏你会发现几乎所有3A游戏,诸如《魔兽世界》、《守望先锋》、《使命召唤》、《神秘海域》、《喋血街头》等它们的引擎和工具的核心部分都是采用C ++编写的。

因此,如果你对游戏开发感兴趣、想加入顶尖游戏公司、或者想用C++创造出属于自己的游戏,那么你应该加强对C++的学习了。

在这里,异步君推荐一本 C++标准专家组的成员安东尼·威廉姆斯的最新著作《C++并发编程实战(第2版)》给你,希望你能通过这本C++并发编程技能的必读图书成为高级C++开发人员。


●   点击上图,即可5折购买《C++并发编程实战(第2版)》



 1

读这本书的四大理由

理由一:这本书是完美的工程实践风格,有完整的C++例子

《C++并发编程实战(第2版)》可以作为C++在编写优雅多线程应用方面的权威指南。并更新了C++17的相关内容,其详细描述了并行开发的各个方面,从启动新线程到设计复杂的多线程算法和数据结构。

在每一章中,并发大师安东尼·威廉姆斯都为你提供了示例和一些练习,也包括一些独到的见解,这对于开发经验丰富人员来说可能是非常有兴趣的。

主要提供了以下让C++程序员特别感兴趣的内容:


  • 对C++17特性全面覆盖

  • 启动和管理线程

  • 同步并发操作

  • 设计并发代码

  • 调试多线程应用


当然,其书名中的“实战”二字也是名副其实的。全书围绕真实的编程场景深入浅出。

所举的例子简洁而有代表性,比如:


● 基于锁的并发数据结构的设计

(Designing lock-based concurrent data structure)


● 无锁并发数据结构的设计

(Designing lock-free concurrent data structure)


● 并发代码的设计

(Designing concurrent code)


● 高级线程管理

(Advanced thread management)


● 并行算法

(Parallel algorithm):


● 多线程应用的测试与调试

(Testing and debugging multithreaded application)

......


这本书涉及的技术、函数和类适用于各种环境:

无论负责运行的计算机是配备了单核单处理器,还是多核多处理器;

无论其并发功能如何实现,是凭借任务切换,还是真正的硬件并发,一概不影响使用。

这才是真正的实战啊!

这些例子中的一些代码甚至可以直接照搬到生产环境下使用,相信仔细阅读并实战完之后的你,能收获作者对多线程程序设计的一些很有价值的经验,能对于底层有更深入的认知。


理由二:C++并发编程领域大师多年心血,其独特见解引人深思

安东尼·威廉姆斯

安东尼·威廉姆斯(Anthony Williams)来自英国,他是开发者、顾问、培训师,积累了超过 20 年的 C++开发经验。

安东尼·威廉姆斯离开大学后的第一份工作就是与多线程的概念和代码打交道。而正是这份工作,让他对多线程和并发产生了浓厚的兴趣。

从 2001 年起,他成为英国标准协会 C++标准专家组的成员,独立编写或参与编写了许多 C++标准委员会的文件,使 C++11 标准引入了线程库。等到多线程被明确提上议程,他便全力以赴,独自起草并参与编写了许多与多线程和并发相关的提案,这些提案塑造了 C++标准的一部分。

他持续参与了 C++标准委员会并发小组的工作,包括对 C++17 标准进行改进,制定并发技术规约(Concurrency Technical Specification),以及编写关于 C++未来演化发展的提案等


现在,他继续致力于开发 C++的新特性,以增强 C++并发工具集的功能,这两者都遵循 C++标准和提案。他还扩展了 C++线程库,实现了工具“just::thread Pro”(Just Software Solutions 公司的产品)。

此外,安东尼·威廉姆斯还是大名鼎鼎的Boost C++程序库的作者,呼应系列名《In Action》。他最开始因为兴趣,跟进了 Boost 线程库的初期开发。

当原本的开发者中止了相关工作时,他抓住机会,立即接手——Boost 线程库第 1 版的作者是 William E. Kempf,第 2 版的作者就是他。

从 2007 年到 2011 年,他担任了 Boost 线程库的主力开发者和维护者。

安东尼·威廉姆斯曾说“关于计算机,我的兴趣主要有两个——C++和多线程”,这你可以从他全是C++内容的Github主页(https://github.com/anthonywilliams)上看出。


(安东尼·威廉姆斯Github主页)


《C++并发编程实战(第2版)》正是他多年心血的凝聚。

这本书基于他研习 C++和多线程的全部经验,旨在指导其他 C++开发者安全且高效地使用 C++线程库和并发技术规约。他也希望将自己对这个主题的兴趣和热忱融入本书,并传递给读者。


理由三:紧跟 C++标准不断更新的脚步,全新升级推出第2版

2012 年出版的《C++并发编程实战》帮助了很多想要学习和了解C++并发编程的读者,不少读者称其为“C++并发编程的权威指南”

《C++并发编程实战(第1版)》是基于C++11新标准的并发和多线程编程深度指南。内容包括从std::thread、std::mutex、std::future和std::async等基础类的使用,到内存模型和原子操作、基于锁和锁数据结构的构建,再扩展到并行算法、线程管理,最后还介绍了多线程代码的测试工作。

(《C++并发编程实战(第2版)》点击图片5折购买)


由于在C++11标准发布之后,以 C++11 为基础,委员会相继发布了 C++14 标准、C++17 标准和一些技术规约,进一步为编写多线程程序提供支持。

在这些技术规约中,其中一份针对并发特性的扩展,而针对并行特性的扩展另有一份,后者已被正式纳入C++17 标准。

这本全新推出的《C++并发编程实战(第2版)》延续第 1 版的风格和特色的同时,又增添了许多精彩之处——


从 C++标准程序库的各种工具讲起,介绍了线程管控、在线程间共享数据、并发操作的同步、C++内存模型和原子操作等内容。


理由四:豆瓣8.7高分、计算机领域专家赞誉如潮

《C++并发编程实战(第2版)》的英文原版《C++ Concurrency in Action》口碑颇高,不仅获得豆瓣8.7评分,还收到了许多专家大牛的赞赏和读者的走心评价。

(英文原版《C++ Concurrency in Action》的豆瓣评分)


计算机领域专家赞誉如潮:


“目前,对 C++11 多线程工具的探讨,本书是有关图书中较好的一本,而且在未来相当一段时期内还会如是。”

—— Effective C 与 More Effective C 的作者 Scott Meyers


“这是一本好书。”

——C++之父 Bjarne Stroustrup


“本书使 C++多线程不那么晦涩难懂。”

——红帽(Red Hat)公司首席高级维护工程师 Rick Wagner


“阅读本书让我头痛,然而痛有所得,好事。”

——Ingersoll Rand 公司的 Joshua Heyer


“Anthony 示范了如何将并发用于实践。”

—— OR/2 Limited 公司的 Roger Orr


“一份关于 C++新并发标准的指南,缜密而有深度,由标准制定者亲自编写。”

——瑞士信贷银行总监 Neil Horlock


“任何严肃的 C++开发者都应该读懂这本重要的书。”

——Pace 公司开发总监 Jamie Allsop 博士



豆瓣读者好评不断:


(豆瓣读者对本书五星好评)



 2

这本书应该如何学?

目标读者

这本书适合于需要深入了解C++多线程开发的读者,以及使用C++进行各类软件开发的开发人员、测试人员。

对于使用第三方线程库的读者,也可以从本书后面的章节中了解到相关的指引和技巧。同时,本书还可以作为C++线程库的参考工具书。


结构安排

如果你以前没有编写过多线程代码,作者建议按顺序从头到尾阅读本书。

如果你之前没使用过 C++11 的新功能,那就需要先浏览一下附录 A,再开始阅读正文,这将有助于透彻理解本书的代码示例。正文中已经标注出用到 C++新特性的地方,尽管如此,一旦你遇到任何从未见过的内容,也可以随时翻查附录。

如果你已经编写过多线程代码,并且经验丰富,前几章会让你知晓已经熟知的工具与新标准的 C++工具是怎样对应的。

如果你要进行任何底层工作,涉及原子变量,则第 5 章必不可少。

为了确保你真正熟知 C++多线程编程的各种细节,例如异常安全(exception safety),那么,第 8 章值得你好好学习。

如果你肩负某种特定的编码任务,索引和目录会帮你迅速定位到有关章节。

即便你已经掌握了 C++线程库的使用方法,附录 D(可从异步社区下载)依然有用,例如可供你查阅各个类和函数调用的精准细节。你也可以考虑时不时地回顾一下主要章节,或强化记忆某个特定的模型,或重温示例代码。


(《C++并发编程实战(第2版)》目录)


▌代码

代码清单都采用等宽字体(示例:fixed-width font)以区分于普通文本。许多代码清单都附有代码注解,标记出重要的概念。

在一些代码清单中,代码通过有编号的圆形标志与随后正文的解释相对应。

为了能够原封不动地使用本书中的代码,读者需要安装新近发布的 C++编译器以支持示例中 C++11 的语言特性(见附录 A),另外还需要 C++标准线程库。

Boost 线程库提供了一套 API,这套 API 以 C++11 标准线程库的提案为依据,可以移植到许多平台上。

本书的绝大多数示例代码稍作改动就能使用 Boost 线程库,这些改动包括将 std::with 全部替换为 boost::and,以及用#include 预处理指令包含恰当的头文件。

Boost 线程库内有少部分功能未获支持(如 std::async)或者名字不同(如 boost::unique_future)。


最后再提醒一下!

新书上市,异步社区五折优惠哦!

《C++并发编程实战(第2版)》

作者:[英]安东尼·威廉姆斯(Anthony Williams)

译者:吴天明


最后
如何送书



此次朋友圈点赞送书,全靠运气,2022 年 1 月 1 号晚 8 点在下面微信朋友圈点赞顺序为 8、38、68、98、128、158、188、218 的 8 位小伙伴各送一本《C++并发编程实战(第2版)》。添加下面微信好友,参加送书活动。


欢迎大家星标公众号,进微信学习交流群,后台回复“加群”。  



文章编辑:罗梦婷   审校:刘鑫

参考来源:

异步社区《C++并发编程实战(第2版)》前言、第1章《C++并发编程实战(第1版)》

https://www.amazon.com/C-Concurrency-Action-Second/dp/B082MS5SZW

浏览 80
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报