首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# \ Lock \ lock实例成员VS lock静态成员

C# \ Lock \ lock实例成员VS lock静态成员
EN

Stack Overflow用户
提问于 2011-07-04 13:21:14
回答 3查看 1.1K关注 0票数 1

哪个更好?这两个选项在运行时间上有什么不同吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-07-04 13:26:14

锁定静态成员和锁定实例成员在运行时没有区别。但是,如果您使用实例锁并更新静态的

代码语言:javascript
复制
class Broken {
  static int myCounter;
  object synch = new object();

  void SomeMethod()
  {
      lock (synch) { // BAD
        ++myCounter; 
      }
  }
}
票数 2
EN

Stack Overflow用户

发布于 2011-07-04 14:01:01

哈?我认为这应该取决于你锁定的是什么。如果你试图锁定一个非静态对象,它应该锁定非静态对象。顺便说一句,你可能想要调查你正在尝试做什么,大多数时候,已经有线程安全的对象内置在语言中。

票数 0
EN

Stack Overflow用户

发布于 2011-07-04 15:16:01

为什么要锁定一个非静态方法?您通常只需要围绕对共享资源的访问进行同步,即在所有线程之间共享资源。你不会用实例方法做到这一点,你会想要一个单例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6567567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档