这么奢侈?开这么多线程池?
你是要干嘛····这样改改:void start()
{
 ThreadPool.QueueUserWorkItem(new WaitCallback(DoWork),);static void DoWork(object state)
{
    //执行我的操作
for (int i = 0; i < a.Count; i++)
            {
                string b= a[i].ToString();
                // TODO:
            } 
}
}

解决方案 »

  1.   

    void start()
    {
     ThreadPool.QueueUserWorkItem(new WaitCallback(DoWork));
    }
     
    static void DoWork(object state)
    {
        //执行我的操作
               for (int i = 0; i < a.Count; i++) {
                    string b= a[i].ToString();
                    // TODO:
                } 
    }
      

  2.   

    首先确保开多个线程能确实解决你的问题的前提下建议开和cpu核数量差不多线程即可所有任务一次性放进线程池,那只是避免阻塞主线程,并没有提高效率每个任务分开放进线程池,任务量大的情况,会导致线程池资源紧缺,出现任务排队,大量线程导致cpu上下文切换也会消耗时间所以开若干线程平均分配任务即可,可以根据实际情况调整线程个数
      

  3.   

    首先,需要确定你的任务到底是操作IO还是操作内存
    如果是操作IO,外部设备比CPU慢的太多,CPU会有很多等待的时间,利用等待的时间切换到其他线程,是可以很大的提高效率的
    而如果是内存操作,CPU与内存的交流速度非常快,跟CPU本身的执行基本一致,CPU一直在忙碌,你让它来回切换线程,反而降低效率