我有一个并发BlockingCollection
的重复元素。如何修改它以添加或获取不同的元素?
问问题
2676 次
1 回答
6
的默认后备存储BlockingCollection
是ConcurrentQueue
. 正如其他人指出的那样,使用它添加不同的项目相当困难。
但是,您可以创建自己的实现 的集合类型IProducerConsumerCollection
,并将其传递给BlockingCollection
构造函数。
想象一个ConcurrentDictionary
包含当前在队列中的项目的键。要添加项目,首先调用TryAdd
字典,如果该项目不在字典中,则添加它,并将其添加到队列中。Take
(and TryTake
) 从队列中获取下一项,将其从字典中删除,然后返回。
如果有并发HashTable
,我会更喜欢,但由于没有,你将不得不与ConcurrentDictionary
.
于 2011-10-04T21:16:12.630 回答