第六十六章:互斥锁
TL;DR
- 互斥锁保证同一时刻只有一个执行者进入临界区。
正文
线程进入临界区前请求锁,完成后释放锁。锁已被占用时,后来者不能继续访问共享数据。原子“测试并设置”让两个线程不会同时以为自己拿到了锁。
锁必须在所有路径上释放,否则其他线程会永久等待;而锁保护范围过大又会不必要地降低并发。
思考题
忘记释放锁为什么像把门钥匙带走?
小结
- 互斥锁把临界区串行化。
思考题答案(仅供参考)
后续线程都会看到锁仍被占用,无法进入受保护的区域。
协议
本文采用 CC BY-NC-SA 4.0 协议发布。