B.G*_*ios 5 c# parallel-processing blockingcollection
我有BlockingCollection重复的元素.如何修改它以添加或获取不同的元素?
的默认后备存储BlockingCollection是ConcurrentQueue. 正如其他人指出的那样,使用它添加不同的项目是相当困难的。
但是,您可以创建自己的实现 的集合类型IProducerConsumerCollection,并将其传递给BlockingCollection构造函数。
想象一个ConcurrentDictionary包含当前在队列中的项目的键。要添加一个项目,您首先调用TryAdd字典,如果该项目不在字典中,则添加它,并将其添加到队列中。Take(和TryTake) 从队列中获取下一项,从字典中删除它,然后返回。
如果有一个 concurrent HashTable,我更喜欢,但由于没有,您将不得不使用ConcurrentDictionary.