【发布时间】:2015-12-18 10:48:43
【问题描述】:
我有生产者/消费者的问题。目前我有一个简单的Queue 被lock 包围。
我正在尝试用更高效的方法来替换它。
我的第一选择是使用ConcurrentQueue,但我不知道如何让我的消费者等待下一条生成的消息(不执行 Thread.Sleep)。
另外,如果队列的大小达到特定数字,我希望能够清除整个队列。
您能否推荐一些符合我要求的现有类或实现?
【问题讨论】:
-
你试过
BlockingCollection类吗? -
看看this question。虽然它是关于多个制作人的,但如果你有一个制作人也没关系。
-
您能否详细说明“如果队列大小达到...则清除整个队列”?对于其他需求,BlockingCollection 是理想的选择。
-
@YacoubMassad 实际上我确实看到了它,但最初,从它的名字来看,我认为它是
ConcurrentQueue的Collection风格,它不处理 FIFO 行为。不过好像不是这样,我现在就测试一下 -
您能否提供更多关于清算要求的背景信息?
标签: c# .net multithreading concurrency