锁的基本概念

锁可以分为三类,乐观锁,悲观锁以及死锁

乐观锁

核心:先修改,最后提交时再上锁

以我们平时使用的在线文档为例,当多人同时操作一个文档时,任何人可以进行增删改操作,但这个时候并不会直接提交,

而是当最后保存的时,才会去校验是否存在冲突的情况,最大化提高了多人同时修改文档的效率。

悲观锁

互斥锁/排他锁

简单来说就是同一时间只允许一个线程访问该对象

读写锁/共享锁

读写锁同一时间内只允许一个写者,但是允许多个读者同时读对象。

自旋锁

与互斥锁类似,如果未获取锁,则循环等待,并不断获取锁

死锁

多个对象同时争夺锁,但都无法获取锁

需满足以下四个条件,才算为死锁

  • 一个资源每次只能被一个进程使用。
  • 一个进程因请求资源而阻塞时,对已获得的资源保持不放。
  • 进程已获得的资源,在末使用完之前,不能强行剥夺。
  • 若干进程之间形成一种头尾相接的循环等待资源关系

    A 获取B ,B获取C ,C获取A


锁的基本概念
https://www.xinyublog.com/concept/lock/
作者
蚂蚁
发布于
2023年7月8日
许可协议