多线程和静态构造函数
本文关键字:构造函数 静态 多线程 | 更新日期: 2023-09-27 18:11:46
假设我有以下类:
class Dummy
{
public static Dictionary<int, int> dict = new Dictionary<int, int>(); // (1)
static Dummy() // (2)
{
dict.Add(1, 100);
dict.Add(2, 200);
}
}
此类型将被多个线程访问。第(1)和(2)项将于何时执行?它们会对每个线程执行吗?是否可能出现键重复异常?
无论何时创建第一个实例,都将访问它们。没有复制密钥的机会。它们只会发生一次。如果在处理静态构造函数时发生错误,将无法再次访问它。
请参阅下面JohnSaunders的注释,以了解此调用的原子性