关于锁的总结

锁是防止资源竞争的一种机制

操作系统层

自旋锁(spinlock):非阻塞,循环获取直到成功为止,不涉及线程上下切换,适用于线程持有锁的时间较短,锁获取和释放频繁的场景
互斥锁(mutex):阻塞,线程获取锁失败时会被阻塞直到锁释放后才被唤醒,涉及上下文切换
自适应锁(adaptive lock):先尝试用自旋锁获取,几次失败后使用互斥锁

Locks Aren't Slow; Lock Contention Is

锁状态

死锁
活锁

锁策略

独占锁(exclusive lock):写锁
共享锁(shared lock):读锁
可重入锁:可以对已经持有该锁的线程继续加锁,通过记录lock的次数实现,某个线程嵌套使用不可重入锁时会造成死锁

数据库系统

悲观锁
乐观锁

分布式系统

分布式锁

参考:聊聊常见的锁

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 对于iOS中各种锁的学习总结,供日后查阅 引子 日常开发中,@property (nonatomic, st...
    Tr2e阅读 920评论 1 1
  • 1. 背景 本文讨论下锁。 2.知识 锁 在计算机中 是指并发控制的机制。 像 乐观锁,悲观锁,互斥锁 等也都是 ...
    张云飞Vir阅读 352评论 0 0
  • 回答什么是分布式锁 分布式锁相对他的应用场景,即有两个线程同时访问对数据库进行写的操作,这就需要考虑访问的时候我们...
    denok阅读 1,120评论 0 1
  • 1. HashMap原理 jdk8后采用数组+链表+红黑树的数据结构,利用元素的key的hash值对数组长度取模得...
    谷哥得小弟阅读 910评论 0 0
  • 本节内容: java锁介绍[#java%E9%94%81%E4%BB%8B%E7%BB%8D]偏向锁、轻量级锁、重...
    程序员内功心法阅读 191评论 0 1