我想知道在C#中,线程和线程池到底在应用上有什么区别,什么情况下必须用线程池才能完成,请给出有关线程和线程池的概念、应用、示例的相关资料,谢谢

解决方案 »

  1.   

    很抱歉,你发重了也没法收回分,除非结贴给分,不然连一半分都拿不回来,这就是CSDN的恶劣之处。
      

  2.   

    我也曾研究过线程池这东西,但实际还未使用过,因为还没需要用到池这个玩意。至于应用场合主要是在提供多线程服务上,比如我们设计一个服务,主线程负责打开服务并监听端口,一旦有信号接入,则打开一个新的线程处理服务,但是为了控制打开的线程数及重利用已经结束的线程,就需要用到线程池了。不过另一方面,微软提供的服务基本都支持异步操作,而且有并发数设置,无需自己控制线程池,所以如果不是自己定义的服务,使用类似Socket之类的微软提供的服务,是没必要自己管理线程池的。
      

  3.   

    ThreadPool 类为应用程序提供一个由系统管理的辅助线程池,从而使您可以集中精力于应用程序任务而不是线程管理。如果您具有需要后台处理的短期任务,则托管线程池是可以利用多个线程的便捷方式.何时不使用线程池线程
    在以下几种情况下,适合于创建并管理自己的线程而不是使用线程池线程: 需要前台线程。需要使线程具有特定的优先级。您的任务会导致线程长时间被阻塞。由于线程池具有最大线程数限制,因此大量阻塞的线程池线程可能会阻止任务启动。需要将线程放入单线程单元。所有 ThreadPool 线程均处于多线程单元中。您需要具有与线程关联的稳定标识,或使某一线程专用于某一任务。线程池特征
    线程池线程是后台线程。请参见前台和后台线程。每个线程都使用默认堆栈大小,以默认的优先级运行,并处于多线程单元中。每个进程只有一个线程池对象。