我需要一个不允许重复的concurent集合(在BlockingCollection中用作Producer/Consumer).我不需要严格的元素顺序.从另一方面,我想最小化元素"活"在集合中的最大时间.即收集不能是LIFO,理想情况下它应该是FIFO.
好吧,我会说我需要ConcurrentQueue而不允许重复,但是没有重复的ConcurrentBag也可能有效.
为什么C#不包含这样的东西,可能有人已经创建了它?
这个问题是我之前的问题的结果是什么类型的IProducerConsumerCollection <T>用于我的任务?
我有多个生产者和一个消费者.但是,如果队列中存在尚未消耗的内容,则生产者不应再次对其进行排队.(唯一没有重复的阻塞集合使用默认的并发队列)
if (!myBlockingColl.Contains(item))
myBlockingColl.Add(item)
Run Code Online (Sandbox Code Playgroud)
但是,阻塞coll没有contains方法,也没有提供任何类型的trypeek()方法.我如何访问底层并发队列,以便我可以做类似的事情
if (!myBlockingColl.myConcurQ.trypeek(item)
myBlockingColl.Add(item)
Run Code Online (Sandbox Code Playgroud)
尾巴旋转.请帮忙.谢谢
我尝试通过将它包装在BlockingCollection中来实现ConcurrentDictionary,但似乎没有成功.
据我所知,一个变量声明BlockingCollection如工作ConcurrentBag<T>,ConcurrentQueue<T>等等.
因此,要创建一个包含在BlockingCollection中的ConcurrentBag,我会声明并实例化如下:
BlockingCollection<int> bag = new BlockingCollection<int>(new ConcurrentBag<int>());
Run Code Online (Sandbox Code Playgroud)
但如何为ConcurrentDictionary做到这一点?我需要生产者和消费者方面的BlockingCollection的阻止功能.
在尝试添加新项目之前,检查项目是否存在于"blockingcollection"中的最佳方法是什么?基本上我不希望将重复项添加到BlockingCollection中.