c#中最快的生产者消费者方法是什么

时间:2010-01-09 13:26:18

标签: c# multithreading message-queue

我正在尝试实现一个侦听某些消息的队列线程。什么是最快的方法,这是一个多进程多线程应用程序。 我应该使用Apache Qpid吗?或者只是一个常规的.NET Blocking Queue Class(如http://www.eggheadcafe.com/articles/20060414.asp中所述)? 我很高兴听到你对此事的经验。

3 个答案:

答案 0 :(得分:3)

我会避免使用Thread.Sleep()的任何代码。在.NET 4.0广泛使用之前,请考虑使用Joe Duffy的BlockingQueue class.

答案 1 :(得分:1)

查看 John Skeet's制作人消费者示例

答案 2 :(得分:1)

您是否需要队列持久化?换句话说,如果过程由于某种原因而死亡,您是否还需要能够继续?如果是这样,那将使事情变得更加复杂。如果没有,我将使用常规阻塞队列 - 如果您能够使用.NET 4.0,请转到new concurrent collections。这使得这一切变得非常容易。

请注意,我的文章中提供的SwDevMan81引用的示例非常简单,并且它早于泛型。为了获得更高生产质量的实现,您需要一种很好的方法来停止队列,泛型,异常处理等。我的实现是一个合理的起点,但它不应被视为最终产品。