有什么更好的?这两个选项在运行时有什么不同吗?C# Lock lock实例成员VS锁定静态成员
1
A
回答
2
锁定静态和锁定实例成员之间没有运行时差异。但是,如果您使用实例锁定并更新静态,它可能会破坏您的代码。
class Broken {
static int myCounter;
object synch = new object();
void SomeMethod()
{
lock (synch) { // BAD
++myCounter;
}
}
}
0
咦?我认为这应该取决于你锁定的内容。如果你试图锁定一个非静态对象,它应该锁定非静态对象。顺便说一句,您可能想要调查您正在尝试做什么,大多数时候,已经有线程安全对象的内置语言。
0
你为什么要锁定一个非静态方法?您通常只需要同步访问共享资源,即共享资源将在所有线程之间共享。你不会用一个实例方法做到这一点,你会想要一个单身人士。
相关问题
- 1. C#:静态成员VS实例成员
- 2. Form实例成员和静态成员
- 3. 锁定实例或成员为基础
- 4. C++静态成员
- 5. 访问静态成员静态成员
- 6. 静态成员vs静态全局
- 7. 静态成员访问比AS3中的实例成员慢吗?
- 8. 无状态EJB中的静态vs实例成员
- 9. 静态成员实例引用问题
- 10. 实例类的静态成员
- 11. 强制模板静态成员实例
- 12. 单身静态成员vs静态本地会员vs本地会员
- 13. 静态成员
- 14. 静块VS静态成员初始化
- 15. C++:静态成员变量
- 16. C++静态成员变量
- 17. C++类的静态成员
- 18. C++类的静态成员
- 19. C++:复制静态成员?
- 20. @synchronized vs lock/unlock
- 21. 为什么在单例类中实例成员是静态的?
- 22. 静态成员数组成员函数
- 23. 与其他静态const成员初始化静态const成员
- 24. 静态类成员
- 25. F#静态成员
- 26. 静态javascript成员
- 27. C++成员vs非成员运算符+
- 28. 必须静态对象实例有静态成员变量吗?
- 29. ReaderWriterLock vs lock {}
- 30. 通过本地静态实例访问实例成员
所以你说最好的做法是在课堂上锁定静态对象? – Eyal
我一直使用静态锁定目的。 –
好的非常感谢 - 这就是我要做的! – Eyal