是一个c#构造函数线程安全的

本文关键字:构造函数 线程 安全 一个 | 更新日期: 2023-09-27 18:04:39

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

是一个c#构造函数线程安全的

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

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

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

update:构造函数应该小心不要访问类中非只读或const的静态成员。(感谢Nathan A和LVBen)