108得票4回答
有没有类似于异步BlockingCollection<T>的东西?

我想要异步地awaitBlockingCollection&lt;T&gt;.Take()的结果,以便不会阻塞线程。寻找类似于这样的任何东西: var item = await blockingCollection.TakeAsync(); 我知道我可以这样做: var item = ...

46得票4回答
ArrayBlockingQueue和LinkedBlockingQueue有什么区别?

在哪些场景中最好使用ArrayBlockingQueue?什么时候使用LinkedBlockingQueue更好? 如果LinkedBlockingQueue的默认容量等于MAX Integer,那么将其用作具有默认容量的BlockingQueue是否真的有所帮助?

30得票5回答
使用BlockingCollection<T>: OperationCanceledException,有更好的方法吗?

我正在使用(非常优秀的)BlockingCollection&lt;T&gt; 类型来开发一个高度多线程、高性能的应用程序。每个“批次”都将通过标记取消令牌来结束,这会导致任何等待的 Take 调用都会抛出异常。虽然这很好,但我更希望返回值或输出参数来表示它,因为a) 异常有明显的开销,b) ...

23得票2回答
使用BlockingCollection.GetConsumableEnumerable的Parallel.ForEach循环

为什么使用 GetConsumableEnumerable 时,Parallel.ForEach 循环会退出并出现 OperationCancelledException 异常? //outside the function static BlockingCollection&lt;doub...

19得票4回答
为什么在迭代GetConsumingEnumerable()时,不能完全清空底层的阻塞集合?

我在使用任务并行库、BlockingCollection、ConcurrentQueue和GetConsumingEnumerable时遇到了一个可量化且可重复的问题,尝试创建一个简单的流水线。 简而言之,从一个线程向默认的BlockingCollection(在底层依赖于Concurren...

17得票3回答
如何分批消费 BlockingCollection<T>

我已经写了一些代码来消费队列中所有的等待项。与其逐个处理这些项目,按集合方式处理所有等待的项目更有意义。我这样声明了我的队列。private BlockingCollection&lt;Item&gt; items = new BlockingCollection&lt;Item&g...

16得票3回答
如何创建无重复项的ConcurrentQueue?

我需要一个并发集合,不允许有重复的元素(用于在 BlockingCollection 中作为 Producer/Consumer)。 我不需要元素的严格顺序。 另一方面,我希望最大程度地减少元素在集合中的“存活”时间。也就是说,集合不应该是 LIFO,理想情况下应该是 FIFO。 我觉得我需要...

14得票4回答
BlockingCollection<>中的元素顺序

我有一个使用BlockingCollection&lt;&gt;实现的下载队列。现在我想偶尔优先处理一些下载。我考虑过可能会像列表中一样将某些元素“上移”,但是没有像Remove() / AddFirst()或Move()这样的方法。 在BlockingCollection&lt;&gt;中排...

13得票1回答
BlockingCollection.TakeFromAny方法适合构建阻塞优先级队列吗?

我需要建立一个阻塞式优先队列,我的直觉是TakeFromAny可能是关键因素,但是该方法的文档很少。它的目的/适当使用方式是什么? 我的要求是多个线程将添加到高优先级或低优先级队列中。一个线程将始终从高优先级队列中获取,然后是低优先级队列。 很可能BlockingCollection或Ta...

13得票1回答
调用 BlockingCollection<T> 上的 Dispose 方法

我在C# in a Nutshell书籍的示例生产者消费者队列中复用了BlockingCollection(http://www.albahari.com/threading/part5.aspx#_BlockingCollectionT),但有同事问道: “为什么在集合的Dispose中不调...