什么是程序的原子性

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

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

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

扩展资料:

redis的原子性禅好氏:

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

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

redis 实现事务的原理:

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

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

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

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

原子性是数据库的知识。举例子来说:我们要从银行的A账户转100元到B账户,需要两部 *** 作,即

1、从A账户中扣除100元

2、给B账户加100元

所谓原子性,就是要么这两个步骤都完成,要么一个步骤都不要完成,就是要么全部完成,要么就一点不要做,不能只做一部分。

锁是 *** 作系统概念,仍然举例说明:比如搏悔桐有一个账户A,现在有几个进程同时在访问,比如说是P1、P2、P3吧,并且这几个进程都需要进行对A账户读数,然后再修改A账户的余额,前败现在P1读取了A账户的余额,还没有写回去(称之为更新),显然这时候P2、P3不能读A账户(如果P2读数完后,然后把数据写回去,这时候P1又写回去,则P2的 *** 作基坦被覆盖掉了),这时候就需要一种机制来保证同一时刻仅有一个进程在进行读写 *** 作,这个机制就称之为锁。

锁就是保证某个资源(可能是数据,也可能是CPU之类的硬件)在某个时刻仅有一个进程进行读写(多线程中也有同样的 *** 作)。

锁实现方法很多,比如给cpu寄存器置位,不允许进程切换,也有的cpu带有锁 *** 作的指令。


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存