多线程程序设计之一

     虽然C#包含了许多创新性特征,但其中最激动人心的一点却是它对多线程程序设计的内建支持。一个多线程程序包含两个或更多能够同时进行的部分。这种程序的每一部分称为一个线程。
1.多线程基础
     有两种截然不同的多任务处理:基于进程的和基于线程的。理解这两者间的不同很重要。进程本质上是一个正在执行的程序。因此,基于进程的多任务处理有允许计算机同时运行两个或多个程序的特征。在基于进程的多任务处理中,程序是调度程序能够调度的最小代码单元。
     线程是可执行代码的调度单元。在基于线程的多任务处理环境中,所有进程都至少有一个线程,而且可以更多这以为单一程序能够一次执行两个或多个任务。
     基于进程的多任务处理和基于线程的多任务处理之间的不同可以总结如下:基于进程的多任务处理处理当前执行的程序,而基于线程的多任务处理处理同一程序中当前执行的不同程序段。
     多线程的主要优点是它使人们能够编写非常有效的程序。可能大家都知道,大多数I/O装置,不管是网络端口、磁盘驱动器,还是键盘,其运行速度比CPU的速度慢得多。因此,程序往往需要花费大部分执行时间来等待发送到设备的信息。通过使用多线程,程序能够在它空闲的时间执行另一个任务。
     线程可以出于几种状态中。他可以正在运行,或等待取得CPU时间再进行运行。正运行的线程可以被挂起,这是线程执行的一种临时中断,稍后可以再继续运行它。线程等待资源时可能中断。线程可以被终止,在此情形下,结束该线程的执行并且不可再继续。
     .Net框架定义了两种类型的线程:前台和后台。默认情况下,创建线程时所创建的是前台线程,但是我们可以把它改成后台线程。前台线程和后台线程之间的唯一区别:当后台线程的进程中的所有前台线程已经停止时,后台线程将自动终止。
     随着基于线程的多任务处理的出现,也需要特征的特殊类型:同步,他允许线程的执行以某种明确的方式相协调。C#有一道完善的子系统来进行同步操作,在此将描述它的关键特征。
     所有进程都至少有一个执行线程,通常称它为主线程,因为它是当程序启动时要执行的线程。因此,主线程就是一般程序使用的线程。从主线程可以创建其它线程。
    支持多线程程序设计的类在System.Threading名字空间中定义,因此,在任何多线程程序的开头都要包括下面语句:
using System.Threading;
posted on 2008-03-26 21:05  爱你的人  阅读(253)  评论(0)    收藏  举报