当前位置: 首页 > news >正文

做路牌的网站益阳建设局网站

做路牌的网站,益阳建设局网站,企业进行网站建设的方式有哪些,七牛云上市文章目录 并发并行及其使用原因并发与并行使用与不使用并发的原因C多线程支持 并发并行及其使用原因 本书相关 github翻译地址本书源码下载地址第一版github 翻译地址英文原版PDF不错的笔记所有实例的源代码,可在出版商的网站上进行下载github上下载源码 路线图 …

文章目录

  • 并发并行及其使用原因
    • 并发与并行
    • 使用与不使用并发的原因
    • C++多线程支持

并发并行及其使用原因

本书相关

  • github翻译地址
  • 本书源码下载地址
  • 第一版github 翻译地址
  • 英文原版PDF
  • 不错的笔记
  • 所有实例的源代码,可在出版商的网站上进行下载
  • github上下载源码

路线图

  • 前4章,介绍了标准库中的各种工具,展示使用方法。
  • 第5章,涵盖了内存模型和原子操作,包括原子操作如何对执行顺序进行限制(这章标志着介绍部分的结束)。
  • 第6、7章,开始讨论高级主题,如何使用基本工具去构建复杂的数据结构——第6章是基于锁的数据结构,第 7章是无锁数据结构。
  • 第8章,针对设计多线程代码给了一些指导意见,覆盖了性能问题和并行算法。
  • 第9章,线程管理——线程池,工作队列和中断操作。
  • 第10章,介绍C++17中标准库算法对并行性的支持。
  • 第11章,测试和调试——Bug类型,定位Bug的技巧,以及如何进行测试等等。
  • 附录,包括新标准中语言特性的简要描述,主要是与多线程相关的特性,以及在第4章中提到的消息传递库的实现细节和C++17线程库的完整的参考。

并发与并行

并发:指两个或两个以上的独立活动同时发生。

多处理器服务器很早就实现了并行计算。基于单芯多核处理器(多核处理器)的台式机能够真正的并行多个任务,我们称其为”硬件并发“。

并发的两种方式:真正并行任务切换

即便是硬件并发的系统,也有比硬件“可并行最大任务数”还要多的任务需要执行,所以任务切换在这些情况下仍然适用。实际上,许多因素会使得任务分割不均或调度不规则。

无论应用是在单核处理器,还是多核处理器上运行,不论是任务切换,还是硬件并发,这里提到的技术、功 能和类都会涉及。如何使用并发,很大程度上取决于可用的硬件并发。

  • 多进程并发
    • 优点:操作系统会对进程进行保护,更容易编写 安全的并发代码。
    • 缺点:运行多个进程的固定开销:需要时间启动进程,操作系统需要 资源来管理进程。
  • 多线程并发
    • 共享地址空间(全局变量仍是全局的,指针、对象的引用或数据可在线程之间传递)。
    • 同一数据的内存地址在不同的进程中不相同,所以这种共享难以建立和管理。
    • 缺少线程间的数据保护,使得操作系统记录的工作量减小。必须确保每个线程所访问 到的数据一致,这就需要对线程通信做大量的工作。
    • C++标准并未对进程通信提供原生支持,所以实现会依赖于平台相关的API。
    • 对线程的划分是基于概念上的设计,所以线程数不再依赖CPU核芯数。

并发与并行的区别:两个概念大部分是重叠,为了区别多线程中不同的关注点。

  • “并行”更加注重性能。使用硬件提高数据处理速度时,会讨论程序的并行性。
  • 关注重点在于任务分离或任务响应时,会讨论程序的并发性。

使用与不使用并发的原因

  • 使用——分离关注点

    将相关的代码与无关的代码分离,可以使程序更容易理解和测试,从而减少出错的可能。不显式地使用并发,就得编写一个任务切换机制,或者在操作中主动地调用一段不相关代码。

  • 使用——性能

    并发利用方式:

    • 一个单个任务分成几部分并行运行,从而降低总运行时间,这就是任务并行(task parallelism)。但是各个部分之间可能存在着依赖。
    • 每个线程在不同的数据块上执行相同的操作,称为数据并行(data parallelism)

    容易并行的算法称为是“易并行的”(embarrassingly parallel),直接直接硬件线程数量。

  • 不使用——收益比不上成本

线程资源有限,启动与切换线程有额外开销。管线程池(参见第9章)可以用来限制线程的数量。

C++多线程支持

C语言中流行的多线程API——POSIX标准中的C标准和 Microsoft Windows API——很多C++编译器供应商,通过各种平台相关的扩展来支持多线程,也有MFX应用框架和BOOST和ACE通用库。

C++标准库也扩展了:管理线程(参 见第2章)、保护共享数据(参见第3章)、线程间同步操作(参见第4章),以及原子操作(参见第5章)。

C++14中为并发和并行添加了一个新的互斥量类型,用于保护共享数据(参见第3章)。C++17考虑的更多:添加了一整套的并行算法(参见第10章)。

为了效率,C++整合了一些底层工具。这样就需要了解使用高级工具和 使用低级工具的开销差,这个开销差就是抽象代价(abstraction penalty)。

为了达到终极性能,需要给与硬件打交道的开发者提供足够多的底层工具。原子操作库,可直接控制单个位、字节、内部线程间的同步,以及对所有变化的可见性

在C++线程库中提供一个native_handle()的成员函数,允许通过使用平台相关API直接操作底层实现。

总结

从1998标准中完全缺乏支持,经历了各种平台相关的扩展,再到C++11/C++14/C++17标准和并发技术规范对多线程的支持。芯片制造商选择了以多核芯的形式,使得更多任务可以同时执行的方式来增加处 理能力,而不是增加单个核心的执行速度。在这个趋势下,C++多线程来的正是时候,它使得开发者们可以利用CPU带来的更加强大的硬件并发。

http://www.yayakq.cn/news/152483/

相关文章:

  • 网站建设与维护 目录做学历的网站
  • 做电器推广的网站成都手机网站建设哪
  • 哪个网站是vue做的免费店铺logo在线制作
  • 建设银行网站登录不上乐趣做网站
  • 网站架构分类抚州免费注册公司
  • 工信部网站用户名金溪网站建设制作
  • 深圳专业做网站排名公司中国制造网一级类目
  • 建建建设网站电子商务网站建设 精品课程
  • 网站开发属于什么系统如何创建一个个人网站
  • 洛阳网站推广公司电话外贸网站导航
  • 网站建设柒首先金手指9肇庆网页关键词优化
  • 在线装修设计网站如何注册公司支付宝账户
  • 手机网站用什么域名湘潭响应式网站建设 速来磐石网络
  • 嘉鱼网站建设广告公司手机网站模板
  • 德阳网站建设平台做模特网站
  • 互联网站点专业网站排名优化
  • 网站建设遇到的问题app网站的优点
  • 做学校网站会下线吗郴州网站建设推广服务
  • 做窗帘的网站微信代运营合同模板
  • 德州商城网站建设网站建设互联
  • 太原网站建设主页企业网站建设要多久
  • 厦门自主建站模板wordpress 注册页面开发
  • 酷玛网站建设苏州建设网站首页
  • 小白怎样建设公司网站可以免费申请试用的网站
  • 电话怎么做网站域名网站源码在哪
  • 英文网站建设 论文多语言网站
  • 用vs2013做网站登录网站广告位
  • 外贸网站建设开发郑州装修公司排名
  • 做外贸有哪些好的网站有哪些内容怎样做免费网站的推广
  • 法国网站域名如何开拓海外市场