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

图片网站收录wordpress页脚添加音乐

图片网站收录,wordpress页脚添加音乐,贵阳网站建设的公司,北京建设工程交易中心文章目录 并发并行及其使用原因并发与并行使用与不使用并发的原因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/452201/

相关文章:

  • 济宁做网站大约多少钱flash网站源码免费下载
  • 南京汤山建设银行网站wordpress插件 图片
  • 天津网站排名镇江网站设计
  • 深圳出名网站建设公司wordpress静态404错误
  • 公司网站微信推广廊坊手机网站建设
  • 出名的网站制作正规公司黄页官网
  • 电商网站建设的内容网站建设与维护管理实训报告
  • 做hmtl的基本网站设计师服务平台鱼巴士
  • 定制型营销网站建设元典科技网站建设
  • 网站建设策划书案例seo是什么意思知乎
  • 郑州网站建设学校网上购物平台怎么建立
  • 深圳市做网站有哪些公司项目计划书包括几个方面
  • 网站小图标素材python语言特点是什么
  • 注册网站应注意事项请人做网站我要提供什么需求
  • 哪个博客可以做单页网站网站点击量怎么查
  • 国字类型网站有哪些内容个人网站做app上传
  • 网站 设计百度seo关键词优化电话
  • 沧县网站建设价格成都seo推广员
  • 旅游网站开发设计站长工具综合查询系统
  • 积极做好门户网站建设工作网站建设哪个公司的好
  • 网站集约化平台建设分析流媒体网站建设规划
  • 广告投放网站做网站需要套模板
  • 陕西专业网站开发公司app注册推广任务平台
  • idc空间商网站源码做网站一定要服务器吗
  • 昆明市建设厅网站广州网站设计公司招聘
  • 家庭清洁东莞网站建设技术支持wordpress关闭站点
  • 网站科技感页面设计天津塘沽网站建设公司
  • 做网站在厦门排前5名域名注册查询批量
  • 电脑系统网站建设建一个电商网站多少钱
  • 佛山网站建设公司3lue新乡做网站的