首页 > 解决方案 > 语句 x=x+1 和 x++ 是否被认为是原子的?

问题描述

如果最多有 1 个对共享变量的引用,则该语句被认为是原子的。

假设变量 x 是一个共享变量。

语句 1:x = x + 1;

语句 1 有两个引用,但它们指向同一个变量。这仍然算作“两个参考”吗?

语句2:x++;

声明 2 与声明 1 相同,但只有一个引用。

那么这些语句是否被认为是原子的?

提前致谢

标签: catomic

解决方案


你的问题的前提:

如果最多有 1 个对共享变量的引用,则该语句被认为是原子的。

不是从 C 语言的语义中产生或与语义一致的东西。如果您想使用此定义将“原子”定义为与在 C 中的通常含义完全不同的意思,那么通过“引用”的简单英语含义,我会将第一个语句解释为“非原子”并且其次是“原子”。但这与原子的通常含义无关,在异步中断(信号/中断处理程序)或与其他线程/进程/内核的内存同步方面,它们都不是原子性的。


推荐阅读