有10000个任务已经排好队了,线程池中有100个线程正在运行。
         for (int i = 0; i < dt.Count; i++)
                {
                    ThreadPool.QueueUserWorkItem(new WaitCallback(DoWork), i);                }
运行过程中有1000个紧急任务需要及时运行,请问怎么把这1000个任务插入到这个队列中(不是排在队列最后,要排在正在运行的任务的最后一个后面)?

解决方案 »

  1.   

    1:线程池中的线程无法设定优先级。你最好自己写一个线程池;
    2:100个线程被压入线程池,系统不会保证100个线程马上就会被运行;
    3:即使存在两个队列,一个队列是优先级普通线程,一个队列是优先级高的线程,也不能保证是优先级高的线程执行完毕后再依次执行普通优先级线程;
    4:个人感觉,你的插入队列和线程优先级没有任何关系,只要写个线程状态判断,然后插入这个LIST的当前位置就行,跟线程本身没有任何关系
      

  2.   

    1、单一应用程序,线程池默认限制25个线程
    在.NET2.0下好像应该是250个,但是可以设定这个最大值,比如到300个,但是一个应用程序运行那么多线程就说明设计有问题。
      

  3.   

    自己建个线程,设置它的优先级为 realtime,马上就上去了。