【问题标题】:C# 4.0 List<T> accessing with Where,Single,SingleorDefault from multiple threads [duplicate]C# 4.0 List<T> 从多个线程使用 Where,Single,SingleorDefault 访问 [重复]
【发布时间】:2012-11-23 17:03:36
【问题描述】:

可能重复:
Are IEnumerable Linq methods thread-safe?

快速提问。在列表上使用 Where,Single,SingleorDefault 而其他线程访问它(读取但也写入)会导致集合更改同时枚举异常吗?

为什么c# 4.0没有并发List?

【问题讨论】:

标签: c# multithreading list


【解决方案1】:

List&lt;T&gt; 可以安全地从多个线程读取,但根本不支持写入。因此,只要不进行任何更改,您就可以对列表执行多个 LINQ 查询。您可以使用ReaderWriterLockSlim 仅在需要写入的时候获取写入锁。

为什么c# 4.0没有并发List?

我相信很难创建一个实现与List&lt;T&gt; 在排序方面保持相同的保证,但同时也是线程安全的高效。 .NET 4 中的并发集合是高效的,但代价是一些保证(例如在ConcurrentBag&lt;T&gt; 的情况下排序)。

【讨论】:

  • 谢谢(顺便说一句,我真的很喜欢你的博客)
猜你喜欢
  • 2013-01-11
  • 1970-01-01
  • 2012-08-28
  • 2015-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-31
  • 1970-01-01
相关资源
最近更新 更多