我打算在静态构造函数中创建一次列表,然后让该类的多个实例同时读取它(并通过它枚举)而不进行任何锁定.
在本文中, http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx MS描述了线程安全问题,如下所示:
此类型的公共静态(在Visual Basic中为Shared)成员是线程安全的.任何实例成员都不保证是线程安全的.
只要未修改集合,List就可以同时支持多个读取器.枚举通过集合本质上不是线程安全的过程.在枚举与一个或多个写访问争用的极少数情况下,确保线程安全的唯一方法是在整个枚举期间锁定集合.要允许多个线程访问集合以进行读写,您必须实现自己的同步.
"通过集合枚举本质上不是一个线程安全的过程." 声明让我担心.
这是否意味着它对于只有读者的场景是线程安全的,但只要您不使用枚举?
或者我的情况安全吗?
谢谢你的回答.为什么我需要使用AsReadOnly,如果它可以使用或不使用它?