C#:需要一个类似于Java的LinkedBlockingQueue的阻塞FIFO队列

时间:2012-04-18 16:31:44

标签: c# multithreading queue blocking fifo

需要与java LinkedBlockingQueue类似的东西。

感兴趣的方法:messageQueue.poll(120000, TimeUnit.MILLISECONDS); 意思是..获取项目..如果在X单位时间内你仍然没有项目...返回null

+ i必须 FIFO

经过一些谷歌搜索(但尚未测试):我发现ConcurrentQueue(有FIFO行为),BlockingCollection(FiFO或没有FIFO ??)

1 个答案:

答案 0 :(得分:10)

BlockingCollection可以与任意数量的不同类型的集合一起使用。如果您不手动传入特定类型的并发集合,它将使用ConcurrentQueue,这意味着它将完全按照您的意愿执行。如果需要,可以使用并发堆栈类型或并发优先级队列,这就是它使用阻塞集合等通用名称而不是BlockingConcurrentQueue的原因。

如果您不想接受我的话,BlockingCollection的MSDN页面上会列出所有这些内容。