Keyboard shortcuts

Press or to navigate between chapters

Press ? to show this help

Press Esc to hide this help

第六十六章:互斥锁

TL;DR

  • 互斥锁保证同一时刻只有一个执行者进入临界区。

正文

  线程进入临界区前请求锁,完成后释放锁。锁已被占用时,后来者不能继续访问共享数据。原子“测试并设置”让两个线程不会同时以为自己拿到了锁。

  锁必须在所有路径上释放,否则其他线程会永久等待;而锁保护范围过大又会不必要地降低并发。

思考题

忘记释放锁为什么像把门钥匙带走?

小结

  • 互斥锁把临界区串行化。

思考题答案(仅供参考)

  后续线程都会看到锁仍被占用,无法进入受保护的区域。

协议

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