进程,线程,线程池(Process, ProcessThread, Thread, ThreadPool)

 进程的概念:?

线程的概念:?

 

.net中与进程和线程相关的类有Process, ProcessThread, Thread, ThreadPool等等。


 

Process
Process
既包括静态方法又包括实例方法,静态方法一般用来获得关于进程的信息,实例方法一般用于对具体进程进行操作。如:

    Process p=Process.GetCurrentProcess(); //静态方法

    p.CloseMainWindow(); //实例方法

 

ProcessThread
ProcessThread
没有构造函数,一般通过ProcessThreads属性获得。通过它可以获取系统内的线程信息。如:


    ProcessThreadCollection c
=Process.GetCurrentProcess().Threads;

      foreach( ProcessThread pt in c ){

        Console.WriteLine(pt.StartTime.ToString());

    }

 

Thread
Thread
一般用来创建多线程的程序

 

ThreadPool
线程的创建是很耗
cpu时间的,频繁地创建线程影响系统的性能。线程池可以维护一组创建好的工作线程,在需要的时候应用,可以提高性能。ThreadPool.net实现的一个线程池类,默认最大允许的线程数目是25,不能更改(不太确定,但没找到更改的办法),可以用来构建不太大的系统。它的所有方法都是静态的,它是Singleton设计模式的一个实现,每一个进程只能拥有一个线程池,第一个调用的静态方法引发创建一个线程池对象。应用的时候只需要提供一个回调函数,把它加到线程池的工作队列中。如:

using System;
using System.Threading;
class ThreadPoolSample
{
  public ThreadPoolSample()
  {
   ThreadPool.QueueUserWorkItem(new WaitCallback(Counter));
   ThreadPool.QueueUserWorkItem(new WaitCallback(Counter2));
   Thread.Sleep(10000);
  }
  void Counter(object state)
  {
   //略
  }
  void Counter2(object state)
  {
   //略
  }
}

后记:线程池中的线程和自创建线程的区别:(1)主函数退出要等待自创建线程退出才真正退出,主函数退出不会等待线程池中的线程
~~~~~~~~~~~~~~~好像不对,主函数结束,线程结束,有待研究。
(挺别扭,
C# NetWork Programming上说的)。(2)自创线程要调用Start()函数才开始运行,线程池中的线程不需要调用Start()函数。

 

 

 

posted on 2004-06-22 23:50  星星之火  阅读(2642)  评论(0)    收藏  举报

导航