日期:2014-05-18  浏览次数:20851 次

如果用C#做一个任务队列,你选择怎么做?
现在程序需要这样一个功能:
从网络一直收取一条一条的指令,然后依次处理它们,其中的一些操作可能很耗时,所以需要在另外一个线程中做,我打算做一个Queue然后把任务依次排进去,有任务,那个线程就工作,没任务就闲置。类似生产者消费者模型,不过不同的是就算消费者正在消费,生产也不能停止。

1、简单的用一个线程不断检查队列是否有任务。。。这样太耗cpu。。不知道有没有能降低cpu消耗又能快速反应的。(Sleep很长时间就算了)

2、用互斥锁,信号灯或者Monitor去做,如果没任务,就用某种方式锁住,然后在外部有任务的时候就解锁。。对线程方面不了解,请问有什么方法能做到这个功能?

------解决方案--------------------
.net 4.0 的话有 System.Collections.Concurrent.ConcurrentQueue<T> 

专门处理并发的对象
------解决方案--------------------
操作MSMQ就可以了
------解决方案--------------------
探讨

引用:

操作MSMQ就可以了


那个的确非常切合,但是不是要另外装一个组件啊?

------解决方案--------------------
探讨
简单的用一个线程不断检查队列是否有任务。。。这样太耗cpu。。