第七十二章:死锁是怎样形成的
TL;DR
- 死锁是各方都在等待别人释放资源,系统无法推进。
正文
线程 A 拿着锁 1 等锁 2,线程 B 拿着锁 2 等锁 1,便形成环形等待。经典死锁同时具备互斥、占有并等待、不可抢占和环形等待四个条件。
知道条件的价值在于:只要刻意破坏其中至少一个,就能避免这类僵局。
思考题
两把锁按统一顺序取得为何能避免环形等待?
小结
- 死锁是资源等待图中的闭环。
思考题答案(仅供参考)
所有线程都只能从较小顺序请求较大顺序,等待边无法绕回起点。
协议
本文采用 CC BY-NC-SA 4.0 协议发布。