快速提问。当其他线程访问它(读取但也写入)时在列表上使用 Where,Single,SingleorDefault 会在枚举异常时导致集合更改吗?
为什么 c# 4.0 没有并发列表?
快速提问。当其他线程访问它(读取但也写入)时在列表上使用 Where,Single,SingleorDefault 会在枚举异常时导致集合更改吗?
为什么 c# 4.0 没有并发列表?
List<T>
从多个线程读取是安全的,但根本不支持写入。因此,只要不进行任何更改,您就可以对列表执行多个 LINQ 查询。您只能在需要写入的时候使用ReaderWriterLockSlim
来获取写入锁。
为什么 c# 4.0 没有并发列表?
我相信很难创建一个实现与List<T>
在排序方面保持相同的保证,但也是线程安全和高效的。.NET 4 中的并发集合是高效的,但代价是一些保证(例如在 的情况下进行排序ConcurrentBag<T>
)。