1.当程序创建新的线程时需要大量的开销,而Windows操作系统允许用户维持一池的”预先建立“的线程。
2.线程池为程序中指定的方法提供工作线程,有一个特定的线程控制着线程池的工作,但是应用程序也可以分配附加的线程去控制线程池。
- 3. BindHandle(safehandle)// 将操作系统的句柄绑定到线程池
- GetAvailableThreads(out int workersThreads , out int CompletionworkersThreads)//得到当前线程池中可用线程的数量
- QueueUserWorkItem()//在线程池中查询用户代表
- /**********************************注册代表********************************************/
- ThreadPool.QueueUserWorkerItem( new WaitCallBack(Func1));
- /**********************************注册代表********************************************/
3,学习线程池的例子
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading;
- namespace 线程池
- {
- class ThreadPoolSample
- {
- public ThreadPoolSample()
- {
- int i;
- ThreadPool.QueueUserWorkItem(new WaitCallback(Func1));
- ThreadPool.QueueUserWorkItem(new WaitCallback(Func2));
- for (i = 0; i < 10; i++)
- {
- Console.WriteLine("Main:{0}", i);
- Thread.Sleep(1000);
- }
- }
- void Func1(object state)
- {
- int i;
- for (i = 0; i < 10; i++)
- {
- Console.WriteLine("Thread1:{0}", i);
- Thread.Sleep(2000);
- }
- }
- void Func2(object state)
- {
- int i;
- for (i = 0; i < 10; i++)
- {
- Console.WriteLine("Thread2:{0}", i);
- Thread.Sleep(3000);
- }
- }
- static void Main(string[] args)
- {
- ThreadPoolSample myThreadPoolSample = new ThreadPoolSample();
- }
- }
- }