- URL: https://www.zhihu.com/question/5659322941
- Added At: 2025-01-20 07:28:30
- Link To Text
本文介绍了无锁数据结构的定义、性质及其与锁的区别,并通过交通系统类比说明了其优势和应用场景。
-
无锁数据结构定义:
- 无锁数据结构并非完全无锁,而是将锁定粒度降至最低。
-
交通系统类比:
- 红绿灯类比锁,一个方向通行时,另一个方向阻塞。
- 立交桥类比无锁数据结构,所有方向可以并行。
- 高架桥类比wait-free无锁数据结构,车辆无需等待,无需减速。
-
锁定粒度比较:
- 立交桥为lock-free,车辆在转弯时速度会慢。
- 高架桥为wait-free,车辆无需等待,无需减速。
-
锁的性质:
- 锁应保证同一时刻只有一个进程能获取。
- 锁被获取后,其他进程执行Lock会被阻塞,直到锁被Unlock释放。
-
原子变量:
- 原子变量不存在无限期阻塞,总会有一个进程能在一定步骤后成功修改。
-
锁与原子变量的区别:
- 锁可能导致无限期阻塞。
- 原子变量保证在有限步骤内成功修改。
-
设计锁的API:
- Lock和Unlock。
- 满足锁的性质。
-
无锁数据结构应用:
- 针对不同场景选择合适的数据结构。
- 考虑到现实世界的限制,并非所有路口都能修成高架桥。