“原子对象”的定义

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (15)

在C和C ++的标准术语,短语“ 原子对象 ”是指“ 物体原子类型, ”不是吗?

没有标准会明确定义每个双字短语,因此没有错误的C和C ++标准,因为省​​略了这个短语的明确定义。然而,当我读到C ++ 17标准(这里的草案)时,教派。4.7.1(4),即“所有的修改以使特定原子对象中号发生在一些特定的总次序,被称为修饰顺序中号 ” -和当标准反复采用类似的语言来分隔以往更精确逻辑并发-I我想确保我不会无意中误解。

我是否正确地假设短语“原子对象”的意思

  • 对象原子类型

我能想象的唯一合理的选择是这个短语的意思

  • 正确对齐的对象足够小,硬件可以原子地处理

请问是哪一个?

(注意:我在C和C ++上都标记了这个问题,因为当涉及原子时,这两个标准使用几乎相同的语言。因此,就我所知,任何一种语言的专家都可以回答。如果由于某种原因,我是错了,那么请删除C标签并保留C ++。)

参考:另见这个问题,我的问题是初步的。

提问于
用户回答回答于

C ++标准对原子对象的操作和操作的效果施加了一组规则([intro.races])。如果对象上的所有操作都满足这些规则,那么该对象是原子的。

短语“原子对象”的意思是“原子类型的对象”,不是吗?

标准中没有措辞。但由于操作的效果取决于对象的类型,因此这不是一个不合理的结论。也相应地:原子类型是其实例是原子对象的类型。

C ++标准库提供了一组保证为原子的类型,以及保证为原子操作的那些类型的函数([atomics])。

正确对齐的对象足够小,硬件可以原子地处理它。

C ++标准没有指定原子对象的对齐或大小。

如果保证对象/类型是原子的(参见[atomics]),并且硬件对原子性有这样的要求,那么语言的实现必须保证满足这些要求,或者实现必须使用锁来强制执行原子。

用户回答回答于

我可以回答C,但C ++确实在这些点上与C同步。

是的,当C标准提到“原子对象”时,它表示具有原子限定的有效类型的对象。但它似乎也没有明确写下来,所以添加它可能是一个好主意。我会看到那个。

此外,除了一些人说,没有原子对象的C中没有原子操作。这是自发地修复的,这样对访问这些对象的原子性永远不会受到损害。

所属标签

可能回答问题的人

  • 西风

    renzha.net · 站长 (已认证)

    7 粉丝1 提问9 回答
  • 四无君

    0 粉丝0 提问3 回答
  • HKC

    红客学院 · 创始人 (已认证)

    26 粉丝7 提问2 回答
  • o o

    3 粉丝490 提问2 回答

扫码关注云+社区

领取腾讯云代金券