锁(X)与锁(typeof(X))

发布于 2024-12-16 16:01:17 字数 201 浏览 1 评论 0原文

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

例如:

private readonly object xmpp = new object();

lock (xmpp)
{
    ...
}

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

What is the difference between locking on a type of a class vs locking on the class itself?

For example:

private readonly object xmpp = new object();

lock (xmpp)
{
    ...
}

vs

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

紫轩蝶泪 2024-12-23 16:01:17
  • 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();
  • lock(x) synchronizes on a different lock for each instance of the type

  • lock(typeof(X)) synchronizes on the same lock for all instances of the type

Always lock on a private lock object:

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

      // ...
            lock (_lock)
            {
            }

If you must synchronize access to class static members, use the same pattern:

 public class X
 {
      private readonly static Object s_lock = new Object();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文