并发知识梳理

什么是并发?

并发是指两个或多个事件在同一时间间隔发生

并发会带来哪些问题?

  1. 更新丢失
    在这里插入图片描述

  2. 不一致读
    在这里插入图片描述

隔离与不变性

隔离: 划分数据,使得每一片数据都只能被一个执行单元访问。
例:word软件,小明打开一个文件,其他人无法打开这个文件或者只能打开这个文件的一个只读拷贝。
不变性: 只有在共享数据可以修改的情况下,并发问题才会出现。所以,一个避免并发冲突的方法是识别那些是不变的数据。

乐观并发控制和悲观并发控制

悲观锁:

避免冲突,数据约束较为强势
  1. 读锁(共享锁):可以一次多个人对一份数据加锁,但是只要有人得到了一个读锁,其他人就都无法再得到写锁。
  2. 写锁(排它锁):一旦有人得到了一个写锁,其他人就都不能再得到读锁或写锁的任何一种。

乐观锁:

检测冲突,数据约束较为友好

通常将冲突检测建立在数据的某种版本标记上,可能是时间戳,也可能是顺序计数器。另一种方法是使用时序读(处理、维护的代价较大)。

悲观锁和乐观锁选择的标准

冲突的频率与严重性

应用场景:
悲观锁 → word文件,如果有人已经打开了文件,其他人只能读,不能写。
乐观锁 → SVN,提交时有版本检测,标记冲突

死锁

死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。

处理死锁:
1.已经发生死锁时,选择一个牺牲者放弃他的锁,可以通过超时控制、检查机制选择牺牲者
2.预防死锁的出现,例如:规定每个人获取锁的顺序和数量

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值