Skip to content

Latest commit

 

History

History
39 lines (30 loc) · 1.76 KB

2025-01-20-(76-封私信)-所谓“无锁数据结构”,是不是可以理解为本质上并不是“无锁”,而只是锁定粒度降到了最低?---知乎.md

File metadata and controls

39 lines (30 loc) · 1.76 KB

(76 封私信) 所谓“无锁数据结构”,是不是可以理解为本质上并不是“无锁”,而只是锁定粒度降到了最低? - 知乎

TL;DR

本文介绍了无锁数据结构的定义、性质及其与锁的区别,并通过交通系统类比说明了其优势和应用场景。

Summary

  1. 无锁数据结构定义

    • 无锁数据结构并非完全无锁,而是将锁定粒度降至最低。
  2. 交通系统类比

    • 红绿灯类比锁,一个方向通行时,另一个方向阻塞。
    • 立交桥类比无锁数据结构,所有方向可以并行。
    • 高架桥类比wait-free无锁数据结构,车辆无需等待,无需减速。
  3. 锁定粒度比较

    • 立交桥为lock-free,车辆在转弯时速度会慢。
    • 高架桥为wait-free,车辆无需等待,无需减速。
  4. 锁的性质

    • 锁应保证同一时刻只有一个进程能获取。
    • 锁被获取后,其他进程执行Lock会被阻塞,直到锁被Unlock释放。
  5. 原子变量

    • 原子变量不存在无限期阻塞,总会有一个进程能在一定步骤后成功修改。
  6. 锁与原子变量的区别

    • 锁可能导致无限期阻塞。
    • 原子变量保证在有限步骤内成功修改。
  7. 设计锁的API

    • Lock和Unlock。
    • 满足锁的性质。
  8. 无锁数据结构应用

    • 针对不同场景选择合适的数据结构。
    • 考虑到现实世界的限制,并非所有路口都能修成高架桥。