锁的基本概念
锁可以分为三类,乐观锁,悲观锁以及死锁
乐观锁
核心:先修改,最后提交时再上锁
以我们平时使用的在线文档为例,当多人同时操作一个文档时,任何人可以进行增删改操作,但这个时候并不会直接提交,
而是当最后保存的时,才会去校验是否存在冲突的情况,最大化提高了多人同时修改文档的效率。
悲观锁
互斥锁/排他锁
简单来说就是同一时间只允许一个线程访问该对象
读写锁/共享锁
读写锁同一时间内只允许一个写者,但是允许多个读者同时读对象。
自旋锁
与互斥锁类似,如果未获取锁,则循环等待,并不断获取锁
死锁
多个对象同时争夺锁,但都无法获取锁
需满足以下四个条件,才算为死锁
- 一个资源每次只能被一个进程使用。
- 一个进程因请求资源而阻塞时,对已获得的资源保持不放。
- 进程已获得的资源,在末使用完之前,不能强行剥夺。
- 若干进程之间形成一种头尾相接的循环等待资源关系
A 获取B ,B获取C ,C获取A
锁的基本概念
https://www.xinyublog.com/concept/lock/