相关疑难解决方法(0)

如何创建不重复的ConcurrentQueue?

我需要一个不允许重复的concurent集合(在BlockingCollection中用作Producer/Consumer).我不需要严格的元素顺序.从另一方面,我想最小化元素"活"在集合中的最大时间.即收集不能是LIFO,理想情况下它应该是FIFO.

好吧,我会说我需要ConcurrentQueue而不允许重复,但是没有重复的ConcurrentBag也可能有效.

为什么C#不包含这样的东西,可能有人已经创建了它?

这个问题是我之前的问题的结果是什么类型的IProducerConsumerCollection <T>用于我的任务?

.net c# collections concurrency

13
推荐指数
1
解决办法
5902
查看次数

如何访问阻塞集合的基础默认并发队列

我有多个生产者和一个消费者.但是,如果队列中存在尚未消耗的内容,则生产者不应再次对其进行排队.(唯一没有重复的阻塞集合使用默认的并发队列)

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)

尾巴旋转.请帮忙.谢谢

c# multithreading .net-4.0 task-parallel-library

6
推荐指数
3
解决办法
2995
查看次数

如何在BlockingCollection中包装ConcurrentDictionary?

我尝试通过将它包装在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的阻止功能.

c# concurrency concurrentdictionary

6
推荐指数
2
解决办法
3793
查看次数

检查阻止集合中的重复项

在尝试添加新项目之前,检查项目是否存在于"blockingcollection"中的最佳方法是什么?基本上我不希望将重复项添加到BlockingCollection中.

.net c#

3
推荐指数
1
解决办法
1838
查看次数