什么更好?这两个选项之间的运行时间有什么不同吗?
答案 0 :(得分:2)
锁定静态和锁定实例成员之间没有运行时区别。但是,如果您使用实例锁并且正在更新静态,它可能会破坏您的代码。
class Broken {
static int myCounter;
object synch = new object();
void SomeMethod()
{
lock (synch) { // BAD
++myCounter;
}
}
}
答案 1 :(得分:0)
咦?我认为这应该取决于你锁定的内容。如果您尝试锁定非静态对象,则应该锁定非静态对象。顺便说一句,你可能想要调查你想要做什么,大多数时候,已经有线程安全的对象内置语言。
答案 2 :(得分:0)
为什么要锁定非静态方法?您通常只需要访问共享资源的同步,即将在所有线程之间共享的资源。你不会用实例方法做这个,你需要一个单例。