【发布时间】:2011-07-02 11:14:59
【问题描述】:
对于单一生产者、单一消费者,我应该使用 BlockingCollection 还是 ConcurrentQueue?
关注点:
- 我的目标是一次提取多达 100 个项目并将它们作为批次发送到下一步。
- 如果我使用 ConcurrentQueue,我必须在没有工作要做时手动使其进入休眠状态。否则我会在旋转上浪费 CPU 周期。
- 如果我使用 BlockingQueue 而我只有 99 个工作项,它可能会无限期地阻塞直到第 100 个工作项到达。
http://msdn.microsoft.com/en-us/library/system.collections.concurrent.aspx
【问题讨论】:
-
这是一个单生产者、单消费者的场景。或者换句话说,一个线程正在写入队列,一个线程正在从队列中读取。
标签: multithreading concurrency .net-4.0