并发集合和独特元素

B.G*_*ios 5 c# parallel-processing blockingcollection

我有BlockingCollection重复的元素.如何修改它以添加或获取不同的元素?

Jim*_*hel 6

的默认后备存储BlockingCollectionConcurrentQueue. 正如其他人指出的那样,使用它添加不同的项目是相当困难的。

但是,您可以创建自己的实现 的集合类型IProducerConsumerCollection,并将其传递给BlockingCollection构造函数。

想象一个ConcurrentDictionary包含当前在队列中的项目的键。要添加一个项目,您首先调用TryAdd字典,如果该项目不在字典中,则添加它,并将其添加到队列中。Take(和TryTake) 从队列中获取下一项,从字典中删除它,然后返回。

如果有一个 concurrent HashTable,我更喜欢,但由于没有,您将不得不使用ConcurrentDictionary.