现在的位置: 首页 > 综合 > 正文

多线程简介

2013年01月19日 ⁄ 综合 ⁄ 共 1076字 ⁄ 字号 评论关闭
一般情况下,需要用户交互的软件都必须尽可能快地对用户的活动作出反应,以便提供丰富多彩的用户体验,但同时它又必须执行必要的计算以便尽可能快地将数据呈现给用户,这时可以使用多线程来实现。
多线程是非常复杂的机制,如果此时读者不能体会这句话的含义,可以尝试同时阅读3本书,首先阅读第一本书第一章,然后再阅读第二本书第一章,再阅读第3本书第一章,回头再阅读第一本书第二章,依次类推,不用很长时间读者就可以体会多线程的复杂性。
既然多线程这么复杂,那么它在操作系统上是怎样工作的呢?其实C#中的多线程在每个操作系统中的运行方式也存在差异。笔者着重说明多线程在Windows操作系统的运行模式,Windows操作系统是多任务操作系统,它以进程为单位,一个进程是一个包含有自身地址的程序,每个独立执行的程序称为进程,也就是正在执行的程序,在系统中可以分配给每个进程一段有限的使用CPU的时间(也可以称为CPU时间片),CPU在片段时间中执行某个进程,然后下一个时间片又跳至另一个进程中去执行。由于CPU转换较快,所以使得每个进程好像是同时执行一样。
图1表明了Windows操作系统的执行模式。
 
图1  Windows操作系统中执行模式
1.多线程的优点
要提高对用户的响应速度并且处理所需数据以便几乎同时完成工作,使用多线程是一种最为强大的技术,在具有一个处理器的计算机上,多线程可以通过利用用户事件之间很小的时间段在后台处理数据来达到这种效果。例如,通过使用多线程,在另一个线程正在重新计算同一应用程序中的电子表格的其他部分时,用户可以编辑该电子表格。
单个应用程序域可以使用多线程来完成以下任务。
 通过网络与Web服务器和数据库进行通信;
 执行占用大量时间的操作;
 区分具有不同优先级的任务;
 使用户界面可以在将时间分配给后台任务时仍能快速做出响应。
2.多线程的缺点
使用多线程有好处,同时也有坏处,建议一般不要在程序使用太多的线程,这样可以最大限度地减少操作系统资源的使用,并可提高性能。
如果在程序中使用了多线程,可能会产生如下问题。
 系统将为进程、AppDomain对象和线程所需的上下文信息使用内存。因此,可以创建的进程、AppDomain对象和线程的数目会受到可用内存的限制;
 跟踪大量的线程将占用大量的处理器时间。如果线程过多,则其中大多数线程都不会产生明显的进度。如果大多数当前线程处于一个进程中,则其他进程中的线程的调度频率就会很低;
 使用许多线程控制代码执行非常复杂,并可能产生许多bug;
 销毁线程需要了解可能发生的问题并对那些问题进行处理。


抱歉!评论已关闭.