A. 编程,'原子性'是什么意思
原子性 应梁李该是 最小的单位的意思。
也就是某个操作要么成功, 要么失败, 不能成功一半,失败一半的。
举个例子:
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帐户也回到原来状态)的操作叫原子性操作。
如果把一个事务可看作是一个程序,它要么完整的被执行罩渣郑,要么完全不执行。这种特性就叫原子性
B. 原子性是什么意思 原子性意思是什么
1、原子操作是不可分割的,在执行完毕不会被任何其它任务或事件中断。在单处理渣碰橘器系统(UniProcessor)中,能够在单条指令中完成的操作都可以认为是“原子操作”,因为中断只能发生于指令之间。这也是某些CPU指令系统中引入了test_and_set、test_and_clear等指令用于临界资源互斥的原因。
2、在对称多处理器(SymmetricMulti-Processor)结构中就不同了,由于系统中有多个处理器在独立地运行,即使能在单条指令中完成的操作也有可能受到干扰。
3、在x86平台上,CPU提供了在指令执行期间对总线加锁的手段。CPU芯片上有一条引线#HLOCKpin,如果汇编语言的程序中在一条指令前面加上前缀LOCK,经过汇编以后的机器代码就使CPU在执行如团这条指令的时候把#HLOCKpin的电位拉低,持续到这条指令结束时放开,从而把总线锁住,这样同一总线上别的CPU就暂时不能通过总线访问内存了,保证了这条指令在多吵渣处理器环境中的原子性。简单来讲:cpu是一条一条指令执行:如果读、写:则是两条指令,在并发情况下可能出问题原子性则是一条指令,完成读写操作。
C. 什么是程序的原子性
程序的原子性指:整个程序中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。
原子性操作:原子性在一个操作是不可中断的,要么全部执行成功要么全部执行失败,有着“同生共死”的感觉。及时在多个线程一起执行的时候,一个操作一旦开始,就不会被其他线程所干扰。
redis的原子性:
Redis所有单个命令的执行都是原子性的,这与它的单线程机制有关;
Redis命令的原子性使得我们不用考虑并发问题,可以方便的利用原子性自增操作 实现简单计数器功能;
redis 实现事务的原理:
批量操作在发送 EXEC 命令前被放入队列缓存
收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令都不会被执行
在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中