"atomic object"的定义
Definition of "atomic object"
在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中没有原子操作。这是这样固定的,因此对这些对象的访问的原子性永远不会受到损害。
- 在提升multi_index容器中,是否定义了"default index"?
- #定义c-预处理器常量..我做错了什么
- 用C++中的一个变量定义一个常量
- 部分定义/别名模板模板参数
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- #为""定义宏;静态";针对不同的上下文
- 如何确保C++函数在定义之前声明(如override关键字)
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 当类在C++中定义时,有什么方法可以"register"类吗?
- 在命名空间中定义函数还是限定函数
- 此代码是否违反一个定义规则
- 编译C++时未定义的引用
- 不同翻译单元中不可重载的非内联函数定义
- 为什么在定义函数之前先声明它
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- "atomic object"的定义
- 在非构造"object"上调用非虚拟成员函数是否定义良好?
- 对web::json::value::object的未定义引用,即使包含json.h
- 未定义对Base::object链接器错误@c++w/freeglut的引用
- 传递参数时C++中"small object"的定义