lock(X) vs lock(typeof(X))

本文关键字:lock typeof vs | 更新日期: 2023-09-27 18:15:02

锁定类的类型与锁定类本身之间的区别是什么?

例如:

private readonly object xmpp = new object();
lock (xmpp)
{
    ...
}

lock (typeof(Xmpp))
{
    ...
}

lock(X) vs lock(typeof(X))

  • lock(x)为类型

  • 的每个实例在不同的锁上同步
  • lock(typeof(X))为类型

  • 的所有实例在同一锁上同步。

始终锁定私有锁对象:

 public class X
 {
      private readonly Object _lock = new Object();
      // ...
            lock (_lock)
            {
            }

如果必须同步对类静态成员的访问,使用相同的模式:

 public class X
 {
      private readonly static Object s_lock = new Object();