Keyboard shortcuts

Press or to navigate between chapters

Press ? to show this help

Press Esc to hide this help

第七十二章:死锁是怎样形成的

TL;DR

  • 死锁是各方都在等待别人释放资源,系统无法推进。

正文

  线程 A 拿着锁 1 等锁 2,线程 B 拿着锁 2 等锁 1,便形成环形等待。经典死锁同时具备互斥、占有并等待、不可抢占和环形等待四个条件。

  知道条件的价值在于:只要刻意破坏其中至少一个,就能避免这类僵局。

思考题

两把锁按统一顺序取得为何能避免环形等待?

小结

  • 死锁是资源等待图中的闭环。

思考题答案(仅供参考)

  所有线程都只能从较小顺序请求较大顺序,等待边无法绕回起点。

协议

本文采用 CC BY-NC-SA 4.0 协议发布。