首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C++20的内存模型与C++11有什么不同?

C++20的内存模型与C++11有什么不同?
EN

Stack Overflow用户
提问于 2020-06-20 15:53:52
回答 1查看 1.5K关注 0票数 27

C++11引入了一个新的内存模型,它允许“运行”C++11代码的抽象机器有一个关于多线程的概念。它还引入了内存加载/存储操作所遵循的一组内存顺序。

C++20的维基百科页面上说

修正的记忆模型。

它给出的参考资料表明,C++11的内存模型存在许多缺陷,C++20将对其进行修正。

请有人举例说明C++11的内存模型所带来的问题,以及如何在C++20中解决这个问题?

相关问题:C++11内存模型简介

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-10 22:56:17

正如@PeterM所暗示的,由于C++11内存模型的形式化后发现了事后发现的问题,它的“一个(主观)小变化”。

旧模型的定义是为了使不同的内存访问机制可以在公共体系结构上使用成本较高的硬件指令来实现。具体来说,memory_order_acquirememory_order_release应该可以在ARM和Power架构上使用某种轻量级的栅栏指令来实现。不幸的是,事实证明,他们不能(!);这也是适用于NVIDIA GPU,尽管这些不是真正的目标十年前。

在这种情况下,有两种选择:

  1. 实现以符合标准-可能,但那样的性能将是相当糟糕的,这不是的想法。
  2. 修正标准以更好地适应这些体系结构(同时不完全扰乱模型)

显然选择了备选案文2。

如需更多详情,请参阅:

  • 拉哈夫,瓦菲亚迪斯,康,侯,德雷尔,C/C++11中顺序一致性的修复
  • 汉斯·博姆的C++-标准委员会论文P0668R5:修改C++内存模型
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62488173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档