CSharp - 是 List <T> ( ) 计数线程安全?

  显示原文与译文双语对照的内容
0 0

这个问题已经有了如下答案:

有人知道我是否需要一个锁来获取 List 中项的计数?

代码行:

System.Web.HttpContext.Current.Application["Name"] as List<Object>

我已经在添加或者删除 List 中的对象时已经进行了锁定。

时间: 原作者:

0 0

这真的取决于你对"线程安全"的意思。

例如在特定时间点读取 Count 很重要? 比如 在插入/delete 之后立即发生,如果是,则不安全检查这是不安全的。

给出了一个整数值,最坏情况是在拉出( 这对你有什么重要的可能) 之后的值变化。 我想应该是对应用程序的重要"过时"的重要性,这只是开发人员可以决定的。

原作者:
0 0

根据 http://msdn.microsoft.com/en-us/library/6sh2ey19(v=vs.110).aspxList<T> 不是线程安全的:

这里类型的public static ( 在 Visual Basic中共享) 成员是线程安全的。 但 不 保证 所有 实例 成员 都 是 线程 安全 的.

如果在 List 上执行多次读操作是安全的,但如果在读取时修改了集合,则会发生问题。 为了确保线程安全,在读或者写操作期间锁定集合。 为了使多个线程能够读取和写入一个集合来访问一个集合,你必须实现自己的同步查询。 对于具有同步生成的集合,请参见 System.Collections.Concurrent 命名空间中的类。 对于固有的thread–safe替代,请参阅ImmutableList类。

由于 .Count 是实例成员,因此,它不是线程安全的。

原作者:
...