假设我有多个线程,每个线程都试图创建同一个类的对象。
在不同的线程中同时创建相同类型的对象会互相干扰吗?
我是否需要在构造函数中使用 "lock" ?
假设我有多个线程,每个线程都试图创建同一个类的对象。
在不同的线程中同时创建相同类型的对象会互相干扰吗?
我是否需要在构造函数中使用 "lock" ?
这很大程度上取决于构造函数的实现方式。
如果构造函数仅访问该类的成员,而不访问任何外部静态类或方法,则是线程安全的。
但是,如果该构造函数正在访问存在于类本身之外的非线程安全对象(如全局单例),则它就不是线程安全的。
更新:构造函数应小心,不要访问非只读或常量的类静态成员。( 感谢Nathan A和LVBen)
const
成员是安全的。static readonly
成员不一定安全。 首先,您需要确保正确的内存屏障已经放置。 - Servy