computer-science - 原子操作: under the hood

标签 computer-science atomic

在后台进行原子操作是如何工作的?

原子操作是所谓的“无等待”吗?

我正在寻找原子操作的“最小公因数”的描述。所有原子操作共享什么?

最佳答案

作为概念的原子性出现在很多地方,我怀疑您正在考虑代码中的原子操作,但是还有其他含义。

数据库事务的一个基本特征是原子性,请参见对事务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/

相关文章:

c++ - 为什么只有 std::atomic_flag 保证是无锁的?

cuda - 原子函数真的会让 CUDA 中的变量变得不稳定吗?

java - 创建一个java程序来求解二次方程

algorithm - 证明 NP-Completeness clique + 独立集图

algorithm - 模糊图自同构群成员测试

c# - 为什么 return 语句必须在 catch block 中的 throw 语句之前

c++ - CUDA:所有 vector 元素的级联求和

CentOS 原子主机上的 kubernetes 集群

algorithm - 比较并交换符合 POSIX 标准的文件系统对象

computer-science - 重大项目建议