介绍一下几种典型的锁
3 分钟阅读
•
525 字
+
250 词
参考答案:
- 互斥锁 :互斥锁是一种最常见的锁类型,用于实现 互斥访问共享资源 。在任何时刻, 只有一个线程可以持有互斥锁 ,其他线程必须等待直到锁被释放。这确保了同一时间只有一个线程能够访问被保护的资源。对于互斥锁来说,如果获取锁失败,操作系统会将线程阻塞,把线程id记录到和这个锁相关的队列中,等其他线程释放了这个互斥锁,才会通过这个等待队列唤醒休眠线程。
- 自旋锁 :自旋锁是一种 基于忙等待 的锁,即线程在尝试获取锁时会 不断轮询 ,直到锁被释放,是完全在用户态的,并且一直占用CPU,但是在其他线程很快就释放锁的情况下,效率较高,因为 避免了线程从阻塞态恢复到运行态的这个过程 。
- 读写锁: 允许多个线程同时读共享资源,只允许一个线程进行写操作 。分为读(共享)和写(排他)两种状态。
- 悲观锁:认为 多线程同时修改共享资源的概率比较高,所以访问共享资源时候要上锁
- 乐观锁:本质上是一种无锁并发控制,先不管, 修改了共享资源再说,如果出现同时修改的情况,再放弃本次操作 ,可以利用CAS和版本号来实现。
总结: