【GP学习笔记三】锁与死锁

一、概述

在GP中,定义了三种锁

  • 自旋锁(Spinlocks)
  • 轻量级锁(LWLocks)
  • 普通锁(Regular locks,也叫重量级锁)

自旋锁

与互斥锁有点类似。针对某一项资源,在任何时刻,最多只能有一个保持者。对于互斥锁,如果资源已经被占用,资源申请者进入睡眠状态。但自旋锁会一直循环查看当前保持者是否已经释放锁,这个循环查看的状态就被形象地称之为自旋。

自旋锁一般是短期持有的,等待竞争的锁不需要做内核态和用户态之间的切换,他们只需要等一等,等到持有自旋锁的保持者释放即可获取。所以长时间上锁是非常耗费性能的,它阻止了其他进程或线程的运行和调度。所以会有一个自旋时间,时间一到立即释放自旋锁。自旋锁没有死锁检测和出错释放,一般由内核调用。

轻量级锁

为共享内存中需要并发访问的结构体提供锁保护。 轻量级锁通过做一个标记来记录此时是否有人在使用该资源。在没有锁竞争的情况下,获取和释放一个轻量级锁都是很快的。当一个进程必须等待一个轻量级锁时,会阻塞在一个SysV信号量上,因此等待过程并不消耗CPU时间。等待进程按照申请锁的先后顺序获得授权,没有超时机制,也没有死锁检测机制。

普通锁

也叫做重量级锁,用于对数据库对象,比如表、数据记录等加锁。普通锁支持多种不同的加锁模式,同时也支持死锁检测以及在事务结束时自动释放。

我们平时接触到的都是普通锁,简单总结下:自旋锁等

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值