c - 语句 x=x+1 和 x++ 是否被认为是原子的?
问题描述
如果最多有 1 个对共享变量的引用,则该语句被认为是原子的。
假设变量 x 是一个共享变量。
语句 1:x = x + 1;
语句 1 有两个引用,但它们指向同一个变量。这仍然算作“两个参考”吗?
语句2:x++;
声明 2 与声明 1 相同,但只有一个引用。
那么这些语句是否被认为是原子的?
提前致谢
解决方案
你的问题的前提:
如果最多有 1 个对共享变量的引用,则该语句被认为是原子的。
不是从 C 语言的语义中产生或与语义一致的东西。如果您想使用此定义将“原子”定义为与在 C 中的通常含义完全不同的意思,那么通过“引用”的简单英语含义,我会将第一个语句解释为“非原子”并且其次是“原子”。但这与原子的通常含义无关,在异步中断(信号/中断处理程序)或与其他线程/进程/内核的内存同步方面,它们都不是原子性的。
推荐阅读
- xml - Extract delimited data
- jasmine - 如何使用 jasmine-protractor 自动化 amcharts?
- xcode - 拖动 NSSegmentedControl 时文本混乱
- c# - C#如何获得具有多个级别的Json计数
- netbeans - 在 Netbeans 中登录
- sql - 在查询中使用 NVL 优于 OR 的优势
- java - Android Java 应为 BEGIN_ARRAY,但在第 1 行第 11 列路径 $.total 为 BEGIN_OBJECT
- c++ - Compiler Explorer (godbolt) 如何安全运行代码?
- c - 内存不足杀
- nuxt.js - 如何在 Nuxt.js 上使用自定义域设置 Auth0