我需要一个容器,其中insert是快速和线程安全的,因为我打算在Parallel.for_each
实例中使用它。
偶尔,我会扫描所述容器并删除包含的每个项目。
鉴于这些成本计算,最佳选择是什么?
由于
答案 0 :(得分:8)
您可以使用ConcurrentBag<T>
。基本上System.Collections.Concurrent命名空间值得检查。如果你有唯一的密钥,ConcurrentDictionary<TKey, TValue>
将是一个很好的选择,因为它可以让你快速访问给定密钥的元素。
答案 1 :(得分:4)
.NET 4.0中有许多并发集合:字典,队列等。请参阅http://msdn.microsoft.com/en-us/library/dd997305.aspx
答案 2 :(得分:1)
尝试ConcurrentBag
- 它是线程安全且非常快,因为大多数操作都是无锁实现的...还有ConcurrentDictionary etc.因此我不确定您确切需要哪些功能。
答案 3 :(得分:0)
链接列表。这有快速插入,但我不确定.NET中是否存在线程安全版本