【问题标题】:C11/C++11 Memory ModelC11/C++11 内存模型
【发布时间】:2012-10-09 12:39:47
【问题描述】:

我有两个问题:

  1. 我想知道 C++11 和 C11 的标准是否会共享相同的内存模型规范。我读到是这样,事实上 C11 正在“继承”C++11 内存模型(无论出于何种历史原因,后者要么首先发生,要么同时发生/与同一个人发生,尽管我认为 Boehm,他是主要是 C++ 人,有很多话要说。),但我想确保请教知识渊博的人。

  2. 我的下一个问题是:GCC 会实现这个内存模型吗?我还没有看到这方面的路线图,想知道是否有人有“独家新闻”。

【问题讨论】:

  • 作为评论,因为您没有直接询问这个问题:我认为最新版本的 clang 已经实现了这些模型。
  • @JensGustedt:谢谢,是的,我也想了解 clang,但我认为我在推动它,所以我试图集中这个问题。
  • @JensGustedt:看起来没有,它还没有实现,至少根据clang.llvm.org/cxx_status.html
  • @Dervin:重要的是要注意,当 GCC 或 Clang 说他们支持某些东西时,他们通常是认真的(当然减去错误)。他们不会说他们支持它,直到他们通过他们的代码库并合理地确保它符合规范的极端情况。另一方面,微软对这类事情采取了一种不那么严格的方法,直接声称"there appears to be nothing for a compiler implementation to do"。这是荒谬的
  • @DervinThunk,您要求提供 model。它是通过新的内置函数实现的,请查看 clang.llvm.org/docs/LanguageExtensions.html#__c11_atomic 。必须在其周围添加的语法糖相对较少,因此很快就会出现。

标签: c++ gcc c++11 memory-model c11


【解决方案1】:
  1. 内存模型是为 C++11 开发的,并被 C11 采用。 Lawrence Crowl 做了很多工作来确保原子操作的接口尽可能接近。参与的人不少,但你说得对,Hans Boehm 就是其中之一。

  2. GCC 当前 (4.7) 实现了内存模型的合理近似。当然足够接近,大多数程序都无法区分。我很确定完全符合他们的计划,但不知道时间表,因为我没有参与。

【讨论】:

    猜你喜欢
    • 2020-10-10
    • 2012-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-29
    • 2014-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多