• c++并发编程实战(第2版) 编程语言 (英)安东尼·威廉姆斯 新华正版
  • c++并发编程实战(第2版) 编程语言 (英)安东尼·威廉姆斯 新华正版
21年品牌 40万+商家 超1.5亿件商品

c++并发编程实战(第2版) 编程语言 (英)安东尼·威廉姆斯 新华正版

69.2 4.9折 139.8 全新

库存34件

河北保定
认证卖家担保交易快速发货售后保障

作者(英)安东尼·威廉姆斯

出版社人民邮电出版社

ISBN9787115573551

出版时间2021-12

版次2

装帧平装

开本16

页数432页

字数573千字

定价139.8元

货号xhwx_1202528951

上书时间2024-05-12

萬書緣

十五年老店
已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:全新
正版特价新书
商品描述
主编:

1.这是一本介绍c并发和多线编程的深度指南,囊括了c并发编程的多个方面,涉及启动新线程以及设计全功能的多线程算法和数据结构等核心知识点;
2.本书译文经过反复推敲,作译者协同参与全书内容的翻译和审读,代码配有详细的中文注释,内容简洁易懂;
3.译者还基于自己的开发经验,补充了许多延伸知识点,适合想要深入了解c多线程的开发人员深入学;
4.本书提供强大的配套资源,包括近200页的附录d以及140多份配套代码文件。

目录:

章你好,c++并发世界1

1.1什么是并发2

1.1.1计算机系统中的并发2

1.1.2并发的方式4

1.1.3并发与并行5

1.2为什么使用并发技术6

1.2.1为分离关注点而并发6

1.2.2为能而并发:任务并行和数据并行7

1.2.3什么时候避并发8

1.3并发与c++多线程9

1.3.1c++多线程简史9

1.3.2新标准对并发的支持10

1.3.3c++14和c++17进一步支持并发和并行10

1.3.4标准c++线程库的效率10

1.3.5台专属的工具12

1.4启程上路12

实例——“helloconcurrentworld”12

1.5小结13

第2章线程管控15

2.1线程的基本管控15

2.1.1发起线程16

2.1.2等待线程完成19

2.1.3在出现异常的情况下等待19

2.1.4在后台运行线程21

2.2向线程函数传递参数23

2.3移交线程归属权26

2.4在运行时选择线程数量30

2.5识别线程33

2.6小结35

第3章在线程间共享数据37

3.1线程间共享数据的问题38

3.1.1条件竞争39

3.1.2止恶条件竞争40

3.2用互斥保护共享数据41

3.2.1在c++中使用互斥41

3.2.2组织和编排代码以保护共享数据43

3.2.3发现接固有的条件竞争44

3.2.4死锁:问题和解决方法51

3.2.5范死锁的补充准则53

3.2.6运用std::unique_lock<>灵活加锁60

3.2.7在不同作用域之间转移互斥归属权61

3.2.8按适合的粒度加锁62

3.3保护共享数据的其他工具64

3.3.1在初始化过程中保护共享数据65

3.3.2保护甚少更新的数据结构68

3.3.3递归加锁70

3.4小结71

第4章并发作的同步73

4.1等待事件或等待其他条件73

4.1.1凭借条件变量等待条件成立75

4.1.2利用条件变量构建线程安全的队列77

4.2使用future等待一次事件发生82

4.2.1从后台任务返回值83

4.2.2关联future实例和任务85

4.2.3创建std::promise88

4.2.4将异常保存到future中90

4.2.5多个线程一起等待91

4.3等待94

4.3.1时钟类94

4.3.2时长类95

4.3.3时间点类97

4.3.4接受超时时限的函数99

4.4运用同步作简化代码101

4.4.1利用future进行函数式编程101

4.4.2使用消息传递进行同步106

4.4.3符合并发技术规约的后续风格并发110

4.4.4后续函数的连锁调用112

4.4.5等待多个future115

4.4.6运用std::experimental::when_any()函数等待多个future,直到其中之一准备绪117

4.4.7线程闩和线程卡——并发技术规约提出的新特120

4.4.8基本的线程闩类std::experimental::latch121

4.4.9基本的线程卡类std::experimental::barrier122

4.4.10std::experimental::flex_barrier——std::experimental::barrier的灵活版本124

4.5小结125

第5章c++内存模型和原子作127

5.1内存模型基础128

5.1.1对象和内存区域128

5.1.2对象、内存区域和并发129

5.1.3改动序列130

5.2c++中的原子作及其类别131

5.2.1标准原子类型131

5.2.2作std::atomic_flag135

5.2.3作std::atomic137

5.2.4作std::atomic:算术形式的指针运算139

5.2.5作标准整数原子类型140

5.2.6泛化的std::atomic<>类模板141

5.2.7原子作的非成员函数143

5.3同步作和强制次序145

5.3.1同步关系147

5.3.2先行关系147

5.3.3原子作的内存次序149

5.3.4释放序列和同步关系167

5.3.5栅栏169

5.3.6凭借原子作令非原子作服从内存次序171

5.3.7强制非原子作服从内存次序172

5.4小结175

第6章设计基于锁的并发数据结构177

6.1并发设计的内涵178

6.2基于锁的并发数据结构179

6.2.1采用锁实现线程安全的栈容器180

6.2.2采用锁和条件变量实现线程安全的队列容器182

6.2.3采用精细粒度的锁和条件变量实现线程安全的队列容器186

6.3设计更复杂的基于锁的并发数据结构198

6.3.1采用锁编写线程安全的查找表198

6.3.2采用多种锁编写线程安全的链表204

6.4小结208

第7章设计无锁数据结构209

7.1定义和推论210

7.1.1非阻塞型数据结构210

7.1.2无锁数据结构211

7.1.3无须等待的数据结构212

7.1.4无锁数据结构的优点和缺点212

7.2无锁数据结构范例213

7.2.1实现线程安全的无锁栈214

7.2.2制止麻烦的内存泄漏:在无锁数据结构中管理内存217

7.2.3运用风险指针检测无法回收的节点223

7.2.4借引用检测正在使用中的节点231

7.2.5为无锁栈容器施加内存模型237

7.2.6实现线程安全的无锁队列242

7.3实现无锁数据结构的原则254

7.3.1原则1:在原型设计中使用std::memory_order_seq_cst次序254

7.3.2原则2:使用无锁的内存回收方案255

7.3.3原则3:范aba问题255

7.3.4原则4:找出忙等循环,协助其他线程256

7.4小结256

第8章设计并发代码257

8.1在线程间切分任务的方法258

8.1.1先在线程间切分数据,再开始处理258

8.1.2以递归方式划分数据259

8.1.3依据工作类别划分任务263

8.2影响并发代码能的因素266

8.2.1处理器的数量266

8.2.2数据竞争和缓存乒乓(cacheping-pong)267

8.2.3不经意共享270

8.2.4数据的紧凑程度270

8.2.5过度任务切换与线程过饱和271

8.3设据结构以提升多线程程序的能272

8.3.1针对复杂作的数据划分272

8.3.2其他数据结构的访问模式275

8.4设计并发代码时要额外虑的因素276

8.4.1并行算法代码中的异常安全276

8.4.2可伸缩和amdahl定律283

8.4.3利用多线程“掩藏”等待行为285

8.4.4借并发特改进响应能力286

8.5并发代码的设计实践287

8.5.1std::for_each()的并行实现288

8.5.2std::find()的并行实现290

8.5.3std::partial_sum()的并行实现295

8.6小结305

第9章线程管理307

9.1线程池308

9.1.1简易可行的线程池308

9.1.2等待提交给线程池的任务完成运行310

9.1.3等待其他任务完成的任务313

9.1.4避任务队列上的争夺316

9.1.5任务取318

9.2中断线程322

9.2.1发起一个线程,以及把它中断323

9.2.2检测线程是否被中断324

9.2.3中断条件变量上的等待325

9.2.4中断条件变量std::condition_variable_any上的等待328

9.2.5中断其他阻塞型等待330

9.2.6处理中断331

9.2.7在应用程序退出时中断后台任务332

9.3小结333

0章并行算法函数335

10.1并行化的标准库算法函数335

10.2执行策略336

10.2.1因指定执行策略而普遍产生的作用336

10.2.2std::execution::sequenced_policy337

10.2.3std::execution::parallel_policy338

10.2.4std::execution::parallel_unsequenced_policy339

10.3c++标准库的并行算法函数339

10.3.1并行算法函数的使用范例342

10.3.2访问344

10.4小结346

1章多线程应用的测试和除错347

11.1与并发相关的错误类型347

11.1.1多余的阻塞348

11.1.2条件竞争348

11.2定位并发相关的错误的技法349

11.2.1审查代码并定位潜在错误350

11.2.2通过测试定位与并发相关的错误352

11.2.3设计可测试的代码353

11.2.4多线程测试技术355

11.2.5以特定结构组织多线程的测试代码357

11.2.6测试多线程代码的能360

11.3小结360

附录ac++11精要:部分语言特361

a.1右值引用361

a.1.1移动语义362

a.1.2右值引用和函数模板365

a.2删除函数366

a.3默认函数368

a.4常量表达式函数371

a.4.1constexpr关键字和用户定义型别373

a.4.2constexpr对象376

a.4.3constexpr函数要符合的条件376

a.4.4constexpr与模板377

a.5lambda函数377

a.6变参模板382

a.7自动推导变量的型别386

a.8线程局部变量387

a.9类模板的参数推导389

a.10小结389

附录b各并发程序库的简要对比391

附录c消息传递程序库和完整的自动柜员机范例393



内容简介:

这是一本介绍c并发和多线程编程的深度指南。本书从c标准程序库的各种工具讲起,介绍线程管控、在线程间共享数据、并发作的同步、c内存模型和原子作等内容。同时,本书还介绍基于锁的并发数据结构、无锁数据结构、并发代码,以及线程管理、并行算法函数、多线程应用的测试和除错。本书还通过附录及线上资源提供丰富的补充资料,以帮助读者更完整、细致地掌握c并发编程的知识脉络。
本书适合需要深入了解c多线程开发的读者,以及使用c进行各类软件开发的开发人员、测试人员,还可以作为c线程库的参工具书。

精彩书评:

“目前,对c11多线程工具的探讨,本书是有关图书中较好的一本,而且在未来相当一段时期内还会如是。”
—— effective c与more effective c的作者cott meyer

“本书使c多线程不那么晦涩难懂。”
——红帽(red hat)公司维护工程师rick wagner

“阅读本书让我头痛,然而痛有所得,好事。”
——ingeroll rand公司的johua heyer

“anthony示范了如何将并发用于实践。”
—— or/2 limited公司的roger orr

“一份关于c新并发标准的指南,缜密而有深度,由标准制定者亲自编写。”
——瑞士信贷银行监neil horlock

“任何严肃的c开发人员应该读懂这本重要的书。”
——pace公司开发监jamie allop博士

“本书是学原子作、内存模型和c并发的上佳之选。”
——c标准委员会成员,openmp执行官michael wong

   相关推荐   

—  没有更多了  —

以下为对购买帮助不大的评价

正版特价新书
此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP