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

提供网站技术投资网站建设公司多少钱

提供网站技术,投资网站建设公司多少钱,智慧展厅设计公司,辽宁省住房和城乡建设厅官网c 11 中为了支持并发,定义了内存序和内存一致性模型。这个概念听起来非常高深,好像是在多线程编程领域浸淫多年之后的神级程序员才能搞明白,并用明白的东西。 本文尝试用最简单的方式说清楚这个概念。因为这个概念真的超级简单,大…

c++ 11 中为了支持并发,定义了内存序和内存一致性模型。这个概念听起来非常高深,好像是在多线程编程领域浸淫多年之后的神级程序员才能搞明白,并用明白的东西。

本文尝试用最简单的方式说清楚这个概念。因为这个概念真的超级简单,大家真的被这个概念欺骗了。

我用一句话就能说清楚。内存一致性模型的本质是防止 编译器和CPU过度优化。意思是告诉 编译器和 CPU 在什么情况下,不要做乱序处理。

编译器和CPU优化

举个例子:

std::atomic<bool> valVailable(false); 
auto imptValue = computeImportantValue();   //计算值
valAvailable = true;                        //告诉另一个任务,值可用了

假设线程 A 在执行上面的代码,线程B 在轮询变量 valAvailable。当 valAvailable 变为 true 时,使用 imptValue 变量做自己的事情。

这种情况下,imptValue 变量在 valAvailable 之前被赋值就很重要了。从代码上看,这不是明摆着么?

但事实上,如果 valAvailable 不是原子变量,所有编译器看到的是给相互独立的变量的一对赋值操作。通常来说,编译器会被允许重排这对没有关联的操作。变成

valAvailable = true;                        //告诉另一个任务,值可用了
auto imptValue = computeImportantValue();   //计算值

最终造成错误。
即使编译器没有重排顺序,底层硬件也可能重排(乱序执行)(或者可能使它看起来运行在其他核心上),因为有时这样代码执行更快。

原子变量与内存序

内存序往往和原子变量一起使用。普通变量意味着内存序不重要。因此把普通变量用在并发场景是绝对的错误。

上面的代码成立还有一个保证,就是c++对原子变量的默认内存序要求是:std::memory_order_seq_cst,意味着 全局顺序一致性。在本次操作之前的所有读写操作,不允许重排到后面,后面所有的读写也不允许重排在我前面。

此外,c++ 还有另外 5 种内存序

  • std::memory_order_acq_rel:同时具有 acquire 和 release 语义
    对于当前操作:

    • 读操作:具有 acquire 语义,确保后续操作不会重排到它之前。

    • 写操作:具有 release 语义,确保前面的操作不会重排到它之后。

  • std::memory_order_release:禁止前面写操作重排到它之后,确保本线程的修改对其他线程的获取操作可见。

  • std::memory_order_acquire:禁止后续读操作重排到它之前,确保能观察到其他线程的释放操作。

  • std::memory_order_consume:保证数据依赖顺序(已不推荐使用)。

  • std::memory_order_relaxed:仅保证原子性,无顺序约束,就是说编译器和 cpu 可以随便重排,只要保证本次操作是原子的就行。

具体该怎么用,我就不讲了。知道概念就行

  1. 内存序是为了防止编译器和cpu乱序执行
  2. 内存序只结合原子变量在多线程编程下使用,普通变量没必要整这个概念。
  3. c++ atomic 变量 默认内存序设置 是禁止原子操作前后的一切重排序的,所以不懂内存序也可以随便用 atomic 而不出错。
http://www.dtcms.com/wzjs/546494.html

相关文章:

  • 做h5页面的网站哪个好wordpress slider插件
  • 网站建设技术课程设计报告网站项目的流程
  • 滨州做网站的公司wordpress 406
  • wordpress仿站网网络推广引流软件
  • 网站带薪歌手都要怎样做呀商城建设开发
  • 公司网站建设案例教程旅游网站设计的目的
  • 做网站湘潭wordpress 域名访问不了
  • 静态网站模板古典机械加工网址大全
  • 做试用网站的原理宁波seo推广外包公司
  • 北京优化健康宝合肥专业网站优化费用
  • 音乐资源网站开发学院网站建设的需求分析
  • 贵州有网站的企业网络网重庆公司
  • 网站建设 推广 公司嘉祥住房和城乡建设局网站
  • c 开发商城网站开发北海 网站建设 公司
  • 北海市建设局网站网站举报中心官网
  • 人才招聘网站建设方案导购个人网站怎么做的
  • 通信建设工程项目经理查询网站做企业网站国内发展
  • 一呼百应网做的网站贵阳网站seo
  • 响应式网站研究现状教你如何建设网站阿里去
  • 做网站销售好做吗品牌设计与vi设计的区别
  • 手机微信网站设计凡科做网站
  • 如何创建手机网站四川省黄页企业电话
  • 在海外做网站 卖东西wordpress如何建目录
  • 建设系统网站网页美工设计的流程有哪些?
  • 网站为什么突然访问不了江苏省建设集团有限公司网站首页
  • 合肥那个公司做网站优化好网站服务方案
  • 天津市住房与城乡建设部网站炫酷网站源码下载
  • 旅游网站建设wordpress建不了网站
  • 国内比较大的源码网站南昌个人网站制作怎么做
  • 网站建设陆金手指下拉贰拾revolution slider wordpress