134得票5回答
在ConcurrentDictionary的AddOrUpdate方法中,更新部分应该添加什么内容?

我正在尝试使用ConcurrentDictionary来重新编写一些代码。我已经查看了一些示例,但在实现AddOrUpdate函数时仍然遇到了困难。以下是原始代码: dynamic a = HttpContext; Dictionary<int, string> ...

73得票2回答
SynchronizedCollection<T>和其他并发集合之间有什么区别?

除了SynchronizedCollection&lt;T&gt;是一个类,而System.Collections.Concurrent命名空间中的并发集合是一个命名空间之外,SynchronizedCollection&lt;T&gt;和所有Concurrent Collections类都提...

67得票4回答
ConcurrentBag的正确用法是什么?

我已经阅读了这里关于ConcurrentBag的先前问题,但没有找到一个实际的多线程实现示例。 ConcurrentBag是一种线程安全的袋子实现,优化用于存储和消耗数据的同一线程的情况。 目前以下是我代码中的使用方式(这是简化后的代码):private void MyMethod...

57得票7回答
ConcurrentBag - 如何添加多个元素?

有没有一种方法可以一次性添加多个元素到ConcurrentBag中,而不是一个一个地添加?我没有在ConcurrentBag上看到AddRange()方法,但是有一个Concat()方法。然而,这对我来说不起作用:ConcurrentBag&lt;T&gt; objectList = new ...

43得票11回答
为什么在 .Net (4.0) 中 ConcurrentBag<T> 如此缓慢?我做错了吗?

在我开始一个项目之前,我编写了一个简单的测试来比较 (System.Collections.Concurrent) 中的 ConcurrentBag 相对于锁定和列表的性能。我非常惊讶,ConcurrentBag 的速度比简单的 List 加锁慢了10倍以上。据我理解,当读写线程相同时,Con...

41得票3回答
支持删除指定项的并发集合?

简而言之:除了ConcurrentDictionary(如果必须我会使用它,但这不是正确的概念),是否有任何支持移除特定项目的并发集合(IProducerConsumer实现),其基于一个项目的简单相等性或定义一个条件用于移除的谓词? 解释:我有一个多线程、多阶段的工作流算法,从数据库中提取...

30得票4回答
为什么ConcurrentBag<T>没有实现ICollection<T>接口?

我有一个方法,它接受一个 IList&lt;T&gt; 并向其中添加内容。在某些情况下,我想将其传递给一个ConcurrentBag&lt;T&gt;,但它没有实现IList&lt;T&gt;或ICollection&lt;T&gt;,只有非泛型的ICollection,它没有Add方法。 现...

29得票5回答
ConcurrentDictionary<TKey, TValue>与Dictionary<TKey, TValue>的区别

根据MSDN文档,ConcurrentDictionary类表示一组线程安全的键值对集合,可同时被多个线程访问。但我知道System.Collections.Concurrent类是为PLINQ设计的。 我有一个在服务器中保存在线客户端的Dictionary,并通过锁定对象使其线程安全。在我的...

26得票2回答
ConcurrentDictionary是否线程安全,以至于我可以将其用作静态缓存?

基本上,如果我想要做以下事情:public class SomeClass { private static ConcurrentDictionary&lt;..., ...&gt; Cache { get; set; } } 这样做是否可以避免在许多地方使用lock?

25得票3回答
如何使用ConcurrentQueue<T>进行线程处理

我正在尝试找出与队列配合工作的最佳方法。 我有一个返回DataTable的过程。 每个DataTable依次与前一个DataTable合并。 但有一个问题,记录太多,无法一直保存到最后的BulkCopy(OutOfMemory)。 因此,我已确定应立即处理每个传入的DataTable。 考虑...