有个任务 不定时的产生一些数据,需要一个线程去处理,现在我考虑2种方式:
1.使用一个一直在运行的线程,有任务时候处理数据(线程利用一个全局队列判断是否有数据需要处理),没数据的时候执行sleep。
2.当有任务的时候,先判断该线程是否在运行,如果没运行就创建一个并开始运行;这样当一直没有任务的时候,该线程就不会运行。请问这2种方式那种比较好,还有没有更好的方法,谢谢大家了....

解决方案 »

  1.   

    第一种改变一下就是通用的方法,线程不要sleep,休眠长短会影响性能,太长响应太慢,太短判断工作太多。你可以采用异步算法,在收到指令后执行挂起代码即可。
      

  2.   

     参考读者写者问题。
    设置一个队列,作为零界资源。写完了notify。处理线程就运行了。处理线程把队列中的都处理掉了,就wait,等待写者的notify
      

  3.   

    何必这么纠结呢?直接用
    ThreadPool.QueueUserWorkItem(你的任务方法就行了);