2026-06-09 / C# / .NET Core

C# lock、死锁与共享状态治理

聚焦 lock 的正确用法、死锁形成条件,以及如何通过锁顺序和临界区设计降低风险。

C#.NET

C# lock、死锁与共享状态治理

lock 的价值不是加速,而是保护共享状态的一致性。它让同一段临界区在同一时刻只被一个线程进入。

死锁为什么出现

死锁通常来自循环等待:线程 1 拿着锁 A 等锁 B,线程 2 拿着锁 B 等锁 A。

实践规则

  • 锁对象保持私有。
  • 不锁 this、字符串、typeof(...)
  • 临界区尽量短。
  • 不在锁里做外部调用或阻塞 I/O。
  • 多锁场景必须定义统一加锁顺序。
C# lock、死锁与共享状态治理 | Remi Resume