【发布时间】:2012-04-11 09:15:12
【问题描述】:
我需要单生产者、单消费者 FIFO 查询,因为
- 我需要按收到的顺序处理消息。
- 我需要异步执行此操作,因为调用者不应在我处理消息时等待。
- 仅当前一个消息处理完成时才应开始下一个消息处理。有时“接收”消息的频率高于“处理”消息的频率。但平均而言,我应该能够处理所有消息,只是有时我必须将它们“排队”打包。
所以我认为这很像 TCP/IP,你有一个生产者和一个消费者,有时你接收消息的速度比你处理的速度要快,所以你必须查询它们。订单在哪里很重要,而呼叫者对你用这些东西做什么完全不感兴趣。
这听起来很简单,我可能可以使用一般的Queue,但我想使用BlockingCollection,因为我不想用ManualResetEvent 等编写任何代码。
BlockingCollection 对我的任务有多合适?或许您可以提出其他建议?
【问题讨论】:
标签: c# .net multithreading .net-4.0 producer-consumer