C#Constructor线程安全吗?

时间:2014-05-21 16:36:25

标签: c# multithreading constructor

假设我有多个线程,每个线程都试图创建同一类的对象 在不同线程中同时创建相同类型的对象是否会相互干扰? 我是否需要在构造函数中使用“lock”?

1 个答案:

答案 0 :(得分:15)

这在很大程度上取决于构造函数的实现。

如果构造函数只访问该类的成员,而不是任何外部静态类或方法,那么是 - 它是线程安全的。

但是如果该构造函数正在访问类本身之外存在的非线程安全对象(例如全局单例),则它不是线程安全的。

update:构造函数应该注意不要访问不是readonly或const的类的任何静态成员。 (感谢Nathan A和LVBen)