首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >“原子对象”的定义

“原子对象”的定义
EN

Stack Overflow用户
提问于 2019-02-26 20:27:50
回答 2查看 2.9K关注 0票数 22

在C和C++的标准行话中,短语“原子对象”的意思是“原子类型的对象”,不是吗?

没有标准会显式地定义每一个两个单词的短语,所以没有人会因为省略这个词的显式定义而责怪C和C++标准。然而,当我读到C++17标准(草案here)时,4.7.1(4),当标准反复使用相似的语言来界定更精确的并发逻辑时,“对特定原子对象M的所有修改都以某种特定的总顺序发生,称为M的修改顺序”-and-我想确保我没有无意中误解。

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

原子类型的

  • 对象

我能想到的唯一可能的选择是,这个短语的意思是

  • 正确对齐的对象足够小,硬件可以自动处理。

请问是哪一种?

(注意:我给这个问题加上了C和C++的标签,因为当涉及到原子时,这两个标准使用几乎相同的语言。因此,据我所知,精通这两种语言的专家都可以回答。如果由于某种原因我弄错了,请去掉C标签并保留C++。)

参考:另请参阅我的问题是初步的this question,

EN

回答 2

Stack Overflow用户

发布于 2019-02-26 20:38:16

在我看来,原子性--严格地说--不适用于类型或对象,它适用于操作,也就是说,你可以说一个操作是原子的或者不是原子的。

通过“原子对象”,我们理解一个对象,它的公共接口只公开原子操作,也就是说,您可以对该对象执行的所有操作都是原子的。

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

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

票数 18
EN

Stack Overflow用户

发布于 2019-02-26 21:19:15

我可以回答C,但C++确实打算在这些方面与C保持同步。

是的,当C标准谈到“原子对象”时,它指的是具有有效类型的对象,该对象是原子限定的。但这似乎也没有明确地写下来,所以添加它可能是一个好主意。我会确保这一点。

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54885590

复制
相关文章

相似问题

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