5

我有一个并发BlockingCollection的重复元素。如何修改它以添加或获取不同的元素?

4

1 回答 1

6

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

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

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

如果有并发HashTable,我会更喜欢,但由于没有,你将不得不与ConcurrentDictionary.

于 2011-10-04T21:16:12.630 回答