Keyboard shortcuts

Press or to navigate between chapters

Press ? to show this help

Press Esc to hide this help

第六十七章:自旋锁与睡眠锁

TL;DR

  • 等锁很短时可自旋;等待较久时应睡眠并让出 CPU。

正文

  自旋锁拿不到锁就反复检查,免去睡眠和唤醒成本,适合临界区极短且无法睡眠的场景。若持锁者要等待磁盘,自旋者只会白白烧掉 CPU。

  睡眠锁把等待者阻塞,释放锁时再唤醒。选择取决于预期等待时间和调度成本。

思考题

为什么单核上长时间自旋尤其糟糕?

小结

  • 等待策略应匹配等待长度。

思考题答案(仅供参考)

  自旋者占着唯一 CPU,持锁者甚至可能得不到机会运行并释放锁。

协议

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