什么是程序的原子性

什么是程序的原子性,第1张

程序的原子性指:整个程序中的所有 *** 作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。

原子性 *** 作:原子性在一个 *** 作是不可中断的,要么全部执行成功要么全部执行失败,有着“同生共死”的感觉。及时在多个线程一起执行的时候,一个 *** 作一旦开始,就不会被其他线程所干扰。

扩展资料:

redis的原子性:

Redis所有单个命令的执行都是原子性的,这与它的单线程机制有关;

Redis命令的原子性使得我们不用考虑并发问题,可以方便的利用原子性自增 *** 作 实现简单计数器功能

redis 实现事务的原理:

批量 *** 作在发送 EXEC 命令前被放入队列缓存

收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令都不会被执行

在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中

参考资料:百度百科——acid

原子性 应该是 最小的单位的意思。

也就是某个 *** 作要么成功, 要么失败, 不能成功一半,失败一半的。

举个例子:

A想要从自己的帐户中转1000块钱到B的帐户里。那个从A开始转帐,到转帐结束的这一个过程,称之为一个事务。在这个事务里,要做如下 *** 作:

1. 从A的帐户中减去1000块钱。如果A的帐户原来有3000块钱,现在就变成2000块钱了。

2. 在B的帐户里加1000块钱。如果B的帐户如果原来有2000块钱,现在则变成3000块钱了。

如果在A的帐户已经减去了1000块钱的时候,忽然发生了意外,比如停电什么的,导致转帐事务意外终止了,而此时B的帐户里还没有增加1000块钱。那么,我们称这个 *** 作失败了,要进行回滚。回滚就是回到事务开始之前的状态,也就是回到A的帐户还没减1000块的状态,B的帐户的原来的状态。此时A的帐户仍然有3000块,B的帐户仍然有2000块。

我们把这种要么一起成功(A帐户成功减少1000,同时B帐户成功增加1000),要么一起失败(A帐户回到原来状态,B帐户也回到原来状态)的 *** 作叫原子性 *** 作。

如果把一个事务可看作是一个程序,它要么完整的被执行,要么完全不执行。这种特性就叫原子性

不能被分开 *** 作的一段代码,就叫原子对象。。

比如,你在atm取款机取钱,atm程序中吐钱跟在你账户上扣掉等额的数目就是一个原子性的 *** 作,这两个动作一定要连在一起 *** 作,要么都成功,要么都失败,不可以被分开只执行某一部分。

像这样的 *** 作,我们叫它原子 *** 作。

吐钱跟账户上扣钱这两个行为对象是严格合为一体的,不可以被分开,我们称这样的对象为原子对象


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11997789.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存