点击各个锁卡片中的按钮,直观理解不同锁机制的工作原理与适用场景
互斥锁是最基础的同步机制,同一时刻只允许一个线程访问共享资源。其他线程必须等待锁释放。
自旋锁不会让线程睡眠,而是不停循环检查锁是否可用。适用于锁持有时间极短的场景。
读写锁支持多个并发读操作,但写操作必须独占。读多写少场景下性能优异。
信号量维护一个计数器,支持N个并发访问。常用于限制并发数量,如连接池大小控制。
CAS是CPU级别的原子指令,通过比较预期值与当前值来决定是否更新。失败时重试,适合低冲突场景。
条件变量允许线程在某个条件不满足时阻塞,等待其他线程发出信号后唤醒。常用于生产者-消费者模式。
乐观锁假设冲突很少发生,先操作后验证(检查版本号)。冲突时重试,适用于读多写少场景。
分布式锁在多个进程/服务器间提供互斥访问。通常基于Redis SETNX或ZooKeeper/etcd实现。