"atomic object"的定义

Definition of "atomic object"

本文关键字:定义 object atomic      更新时间:2023-10-16

在c和c 的标准行话中,短语" aromic objoct "含义 obsoge object 原子类型, object /em>"不是吗?

没有任何标准会明确定义每个两个单词短语,因此,一个不会错误地错误的C和C 标准来省略对此的明确定义。但是,当我在C 17标准中阅读(此处的草稿)时,Sect。4.7.1(4),"对特定原子对象 m 的所有修改都以某种特定的总顺序出现,称为修改顺序 m >"—当标准反复使用类似的语言来划界并发性的更精确的逻辑;我想确保我不会无意中误解。

我正确地假设"原子对象"表示

  • objemp 原子类型

我能想象的唯一合理的替代方案是该短语是指

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

是什么?

(注意:我都标记了这个问题C和C ,因为在原子学方面,这两个标准使用几乎相同的语言。因此,任何一种语言的专家都可以据我所知。我错误的原因,请删除C标签并保留C 。)

参考:另请参阅此问题,我的问题是初步的。

在我的视图中 - 严格地说 - 不适用于类型或对象,它适用于操作,即,您可以说操作是否原子。

通过"原子对象",我们了解一个对象,其公共接口仅公开原子操作,即您可以使用该对象进行的所有操作都是原子。

在C和C 中,可能是将概念定义为另一种方式:首先定义原子对象,然后根据原子对象定义原子操作。对于C和C ,以这种方式定义它可能是有意义的,因为标准的措辞主要与定义语言有关。但是,从理论和抽象功能的角度来看,原子操作是主要问题。

C 具有适合上述描述的标准std::atomic<T>类模板。

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

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

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

C 标准库提供了一组可以保证为原子的类型,以及对于那些可以保证为原子操作的类型的功能([ATOMICS])。

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

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

如果保证对象/类型是原子的(请参阅[Atomics]),如果硬件对原子性具有这样的要求,则该语言的实现必须保证满足这些要求,或者该实现必须雇用锁实施原子。

我可以为C回答,但是C 确实打算在这些点上与C同步。

是的,当C标准说"原子对象"时,它是指具有原子质量的有效类型的对象。但这似乎也没有明确写下来,因此添加它可能是一个好主意。我会看到的。

此外,除了某些人所说,在没有原子对象的C中没有原子操作。这是这样固定的,因此对这些对象的访问的原子性永远不会受到损害。