
互斥,是让多个行动可以同时进行,却规定同一时刻只有一个行动能够进入某段关键操作。它保护的不是“所有工作”,而是会共同读写同一状态的那一小段。
例如两台售票终端同时处理最后一个座位。若它们都先读到“尚未售出”,再各自写入成交,系统就可能卖出两张票。互斥锁让一台终端先取得进入资格,完成检查和修改后释放;另一台必须等待,再依据已经变化的状态决定。这不是让整个售票系统只服务一个人,而是只把最后座位的修改排成一次一个。
互斥与竞态相关但不相同:竞态是结果依赖偶然执行顺序的风险,互斥是限制共享状态访问的一种办法。它也有代价;保护范围过大,会把本可并行的工作堵成队列。中心判断是:互斥不是反对并发,而是在真正不可同时修改的边界上,用有限等待换取状态的连贯。
了解 Geoffrey Chen 的更多信息
订阅后即可通过电子邮件收到最新文章。