c#多线程ThreadPool线程池详解

  

简单说明一下:

  

线程池可以看做容纳线程的容器;一个应用程序最多只能有一个线程池;ThreadPool静态类通过QueueUserWorkItem()方法将工作函数排入线程池;每排入一个工作函数,就相当于请求创建一个线程;

  

线程池的作用:
  

  

1,线程池是为突然大量爆发的线程设计的,通过有限的几个固定线程为大量的操作服务,减少了创建和销毁线程所需的时间,从而提高效率。
  2,如果一个线程的时间非常长,就没必要用线程池了(不是不能作长时间操作,而是不宜),况且我们还不能控制线程池中线程的开始,挂起,和中止。

  

一些使用例子:

  

<>强实例一:

        使用系统;   使用System.Collections.Generic;   使用来;   使用text;      名称空间ThreadPoolDemo   {   类项目   {   静态void Main (string [] args)   {   System.Threading.ThreadPool。QueueUserWorkItem(新System.Threading.WaitCallback (TestThreadPool),新string [] {“drsw”、“四强”、“自卫队”});   Console.ReadKey ();   }      公共静态孔隙TestThreadPool(对象状态)   {   字符串作为string[]=[]进行状态;//传过来的参数的值   int workerThreads=0;   int completionPortThreads=0;   System.Threading.ThreadPool。GetMaxThreads (workerThreads, completionPortThreads);      Console.Write (DateTime.Now.ToString() +“-”+进行[0]+”——workerThreads=" + workerThreads +”——completionPortThreads=" + completionPortThreads);   }   }   }   之前      

上述代码运行结果:

  

 C #多线程ThreadPool线程池详解

  

<强>使用例子二:

        使用系统;   使用System.Collections.Generic;   使用来;   使用text;      名称空间ThreadPoolDemo   {   类项目   {   静态void Main (string [] args)   {   System.Threading.ThreadPool。QueueUserWorkItem(新System.Threading.WaitCallback (TestThreadPool));   Console.ReadKey ();   }      公共静态孔隙TestThreadPool(对象状态)   {   int workerThreads=0;   int completionPortThreads=0;   System.Threading.ThreadPool。GetMaxThreads (workerThreads, completionPortThreads);      Console.Write (DateTime.Now.ToString () +”——workerThreads=" + workerThreads +”——completionPortThreads=" + completionPortThreads);   }   }   }      之前      

上述代码运行结果:

  

 C #多线程ThreadPool线程池详解

  

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

c#多线程ThreadPool线程池详解