《C++ Concurrencyin Action》第10章--多线程程序的测试和调试
本章主要内容· 并发相关的错误· 定位错误和代码审查· 设计多线程测试用例· 多线程代码的性能目前为止,我们了解如何写并发代码——可以使用哪些工具,这些工具应该如何使用。不过,在软件开发中重要的一部分我们还没有提及:测试与调试。如果你希望阅读完本章后就能很轻松的去调试并发代码,本章无法满足你的预期。测试和调试并发代码比较麻烦。除了对一些重要问题的思考,我也会展示一些技巧让测试和调试变得简单一些。....
《C++ Concurrencyin Action》第9章--高级线程管理
本章主要内容· 线程池· 处理线程池中任务的依赖关系· 池中线程如何获取任务· 中断线程之前的章节中,我们通过创建std::thread对象来对线程进行管理。在一些情况下,这种方式不可行了,因为需要在线程的整个生命周期中对其进行管理,并根据硬件来确定线程数量,等等。理想情况是将代码划分为最小块,再并发执行,之后交给处理器和标准库,进行性能优化。另一种情况是,当使用多线程来解决某个问题时,在某个条....
《C++ Concurrencyin Action》第8章--并发代码设计
本章主要内容· 线程间划分数据的技术· 影响并发代码性能的因素· 性能因素是如何影响数据结构的设计· 多线程代码中的异常安全· 可扩展性· 并行算法的实现之前章节着重于介绍使用C++11中的新工具来写并发代码。在第6、7章中我们了解到,如何使用这些工具来设计可并发访问的基本数据结构。这就好比一个木匠,其不仅要知道如何做一个合页,一个组合柜,或一个桌子;并发的代码的使用,要比使用/设计基本数据结构....
《C++ Concurrencyin Action》第7章--无锁并发数据结构设计
前言本章主要内容:1、设计无锁并发数据结构2、无锁结构中内存管理技术3、对无锁数据结构设计的简单指导上一章中,我们了解了在设计并发数据结构时会遇到的问题,根据指导意见指引,确定设计的安全性。对一些通用数据结构进行检查,并查看使用互斥锁对共享数据进行保护的实现例子。第一组例子就是使用单个互斥量来保护整个数据结构,但之后的例子就会使用多个锁来保护数据结构的不同部分,并且允许对数据结构进行更高级别的并....
《C++ Concurrencyin Action》第6章--基于锁的并发数据结构设计
前言:本章主要内容:1、并发数据结构设计的意义2、 指导如何设计3、实现为并发设计的数据结构在上一章中,我们对底层原子操作和内存模型有了详尽的了解。在本章中,我们将先将底层的东西放在一边(将会在第7章再次提及),来对数据结构做一些讨论。数据结构的选择,对于程序来说,是其解决方案的重要组成部分,当然,并行程序也不例外。如果一种数据结构可以被多个线程所访问,其要不就是绝对不变的(其值不会发生变化,并....
《C++ Concurrencyin Action》第3章--线程间共享数据
前言本章主要内容:1、共享数据带来的问题2、使用互斥量保护数据3、数据保护的替代方案上一章中,我们已经对线程管理有所了解了,现在让我们来看一下“共享数据的那些事”。想象一下,你和你的朋友合租一个公寓,公寓中只有一个厨房和一个卫生间。当你的朋友在卫生间时,你就会不能使用了(除非你们特别好,好到可以在同时使用一个房间)。这个问题也会出现在厨房,假如,厨房里有一个组合式烤箱,当在烤香肠的时候,也在做蛋....
《C++ Concurrencyin Action》第2章--线程管理
前言本章主要内容:1 启动新线程2 等待线程与分离线程3 线程唯一标识符好的!看来你已经决定使用多线程了。先做点什么呢?启动线程、结束线程,还是如何监管线程?在C++标准库中只需要管理std::thread关联的线程,无需把注意力放在其他方面。不过,标准库太灵活,所以管理起来不会太容易。本章将从基本开始:启动一个线程,等待这个线程结束,或放在后台运行。再看看怎么给已经启动的线程函数传递参数,以及....
《C++ Concurrencyin Action》第1章--你好,C++的并发世界!
1.1 何谓并发最简单和最基本的并发,是指两个或更多独立的活动同时发生。并发在生活中随处可见,我们可以一边走路一边说话,也可以两只手同时作不同的动作,还有我们每个人都过着相互独立的生活——当我在游泳的时候,你可以看球赛,等等。1.1.1 计算机系统中的并发计算机领域的并发指的是在单个系统里同时执行多个独立的任务,而非顺序的进行一些活动。计算机领域里,并发不是一个新事物:很多年前,一台计算机就能通....
本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。
开发与运维
集结各类场景实战经验,助你开发运维畅行无忧
+关注