在后台进行原子操作是如何工作的?
原子操作是所谓的“无等待”吗?
我正在寻找原子操作的“最小公因数”的描述。所有原子操作共享什么?
最佳答案
作为概念的原子性出现在很多地方,我怀疑您正在考虑代码中的原子操作,但是还有其他含义。
数据库事务的一个基本特征是原子性,请参见对事务ACID属性的描述。
在这种情况下,您将拥有大量的数据库智能,锁等,这几乎可以肯定意味着在两个控制线程(或两个进程)想要获取相同数据时等待。
当您进入代码行时,我想您正在考虑的是声明(使用某种虚拟语言)
global int x = 7;
在一个线程中
x = 25000;
print x;
在另一个
print x;
关于第二个线程将输出的内容,我们能否说什么?我们可能接受7或25000,我们不愿意得到一个数字,该数字是25,000的高位字节和7的低位字节-从概念上讲,这是非原子整数赋值的结果。
不同的编程语言可以自由定义所需的语义,可以想象,有些人会接受他们使用的CPU的任何自然行为(例如32位int是原子的,而64位长则不是),或者它们可能做得更聪明,并且如果CPU本身不提供原子操作,那么如果他们想假冒原子性,我看不出有什么替代方法可以等待。 Java同步关键字。
关于computer-science - 原子操作: under the hood,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6863612/