哪个更好?这两个选项在运行时间上有什么不同吗?
发布于 2011-07-04 13:26:14
锁定静态成员和锁定实例成员在运行时没有区别。但是,如果您使用实例锁并更新静态的
class Broken {
static int myCounter;
object synch = new object();
void SomeMethod()
{
lock (synch) { // BAD
++myCounter;
}
}
}发布于 2011-07-04 14:01:01
哈?我认为这应该取决于你锁定的是什么。如果你试图锁定一个非静态对象,它应该锁定非静态对象。顺便说一句,你可能想要调查你正在尝试做什么,大多数时候,已经有线程安全的对象内置在语言中。
发布于 2011-07-04 15:16:01
为什么要锁定一个非静态方法?您通常只需要围绕对共享资源的访问进行同步,即在所有线程之间共享资源。你不会用实例方法做到这一点,你会想要一个单例。
https://stackoverflow.com/questions/6567567
复制相似问题