【操作系统】不同的锁

本文介绍了操作系统中的悲观锁和乐观锁,包括重量级锁、自旋锁、自适应自旋锁、轻量级锁和偏向锁。悲观锁在获取不到锁时会立即阻塞,而乐观锁如CAS机制则在冲突时回滚重试,适用于不同并发场景。
摘要由CSDN通过智能技术生成

本文参考文章《一句话撸完重量级锁、自旋锁、轻量级锁、偏向锁、悲观、乐观锁等各种锁 ---- 不看后悔系列》和《什么是CAS机制?》,以自己的理解进行总结。

操作系统中的锁主要分为两大类:乐观锁和悲观锁。

悲观锁

悲观锁,Pessimistic Lock,即这种锁的“想法”很悲观——方法执行如果不加锁就会出事,所以操作必须上锁,一个一个的来。

其中重量级锁和自旋锁属于悲观锁。

重量级锁

当进入一个同步、线程安全的方法时,需要先获得该方法的锁,而退出这个方法时,则需要释放锁。如果线程A获取不到该锁,则意味着该方法有别的线程在执行,这时线程A会马上进入阻塞状态,直到持有锁的线程释放锁,才会从阻塞状态被唤醒,再尝试去获取该方法的锁。

重量级锁的特点是:获取不到锁,马上进入阻塞状态

由于重量级锁的特点,导致了它的效率有时候会很慢。试想,当线程A发现锁被占用,立即进入阻塞状态,之后的0.0001秒,这个锁便被释放了,那么它又会从阻塞状态进入运行状态。我们都知道,线程从运行状态进入阻塞状态,需要保存线程的执行状态、上下文等数据,以及设计到用户态到内核态

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值