小编ILI*_*DNO的帖子

读者的C#List <T>的线程安全性

我打算在静态构造函数中创建一次列表,然后让该类的多个实例同时读取它(并通过它枚举)而不进行任何锁定.

在本文中, http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx MS描述了线程安全问题,如下所示:

此类型的公共静态(在Visual Basic中为Shared)成员是线程安全的.任何实例成员都不保证是线程安全的.

只要未修改集合,List就可以同时支持多个读取器.枚举通过集合本质上不是线程安全的过程.在枚举与一个或多个写访问争用的极少数情况下,确保线程安全的唯一方法是在整个枚举期间锁定集合.要允许多个线程访问集合以进行读写,您必须实现自己的同步.

"通过集合枚举本质上不是一个线程安全的过程." 声明让我担心.

这是否意味着它对于只有读者的场景是线程安全的,但只要您不使用枚举?

或者我的情况安全吗?


谢谢你的回答.为什么我需要使用AsReadOnly,如果它可以使用或不使用它?

c# list generic-list thread-safety

12
推荐指数
2
解决办法
2858
查看次数

标签 统计

c# ×1

generic-list ×1

list ×1

thread-safety ×1