程序的原子性指:整个程序中的所有 *** 作,要么全部完成,要么全部不完成,不可能停滞在中间某个环贺散节。
原子性 *** 作:原子性在一个 *** 作是不可中断的,要么全部执行成功要么全部执行失败,有着“同生共死”的感觉。及时在多个线程一起执行的时候,一个 *** 作一旦开始,就不会被其他线程所干扰。
扩展资料: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带有锁 *** 作的指令。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)