锁定类的类型与锁定类本身有什么区别?

例如:

private readonly object xmpp = new object();

lock (xmpp)
{
    ...
}


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

最佳答案

  • lock(x)
  • 类型的每个实例在不同的锁上同步
  • lock(typeof(X))
  • 类型的所有实例的同一个锁上同步

    始终锁定私有(private)锁定对象:
     public class X
     {
          private readonly Object _lock = new Object();
    
          // ...
                lock (_lock)
                {
                }
    

    如果必须同步对类静态成员的访问,请使用相同的模式:
     public class X
     {
          private readonly static Object s_lock = new Object();
    

    07-24 09:47
    查看更多