黑暗法典txt百度云:单线程和多线程的优缺点是什么

来源:百度文库 编辑:高校问答 时间:2024/04/28 12:12:23

多线程和传统的单线程在程序设计上最大的区别在于,由于各个线程的控制流彼此独立,使得各个线程之间的代码是乱序执行的,由此带来的线程调度,同步等问题,将在以后探讨。
  多线程是这样一种机制,它允许在程序中并发执行多个指令流,每个指令流都称为一个线程,彼此间互相独立。
  线程又称为轻量级进程,它和进程一样拥有独立的执行控制,由操作系统负责调度,区别在于线程没有独立的存储空间,而是和所属进程中的其它线程共享一个存储空间,这使得线程间的通信远较进程简单。
  多个线程的执行是并发的,也就是在逻辑上“同时”,而不管是否是物理上的“同时”。

  单线程就是进程只有一个线程
  多线程就是进程有多个线程

  多线程处理的优点

  同步应用程序的开发比较容易,但由于需要在上一个任务完成后才能开始新的任务,所以其效率通常比多线程应用程序低。如果完成同步任务所用的时间比预计时间长,应用程序可能会不响应。多线程处理可以同时运行多个过程。例如,文字处理器应用程序在您处理文档的同时,可以检查拼写(作为单独的任务)。由于多线程应用程序将程序划分成独立的任务,因此可以在以下方面显著提高性能:
  多线程技术使程序的响应速度更快,因为用户界面可以在进行其他工作的同时一直处于活动状态。
  当前没有进行处理的任务可以将处理器时间让给其他任务。
  占用大量处理时间的任务可以定期将处理器时间让给其他任务。
  可以随时停止任务。
  可以分别设置各个任务的优先级以优化性能。

  是否需要创建多线程应用程序取决于多个因素。在以下情况下,最适合采用多线程处理:
  耗时或大量占用处理器的任务阻塞用户界面操作。
  各个任务必须等待外部资源(如远程文件或 Internet 连接)。

  例如,用于跟踪 Web 页上的链接并下载满足特定条件的文件的 Internet 应用程序“robot”。这种应用程序可以依次同步下载各个文件,也可以使用多线程同时下载多个文件。多线程方法比同步方法的效率高很多,因为即使在某些线程中远程 Web 服务器的响应非常慢,也可以下载文件。
  http://cache.baidu.com/c?word=%B6%E0%3B%CF%DF%B3%CC%3B%B5%C4%3B%D3%C5%B5%E3&url=http%3A//www%2Edaima%2Ecom%2Ecn/Info/94/Info31410/&b=0&a=4&user=baidu#0

  下面是多线程的例子
  还在Dos时代,人们就在寻求一种多任务的实现。于是出现了TSR类型的后台驻留程序,比较有代表性的有Side Kick、Vsafe等优秀的TSR程序,这类程序的出现和应用确实给用户使用计算机带来了极大的方便,比如Side Kick,我们编程可以在不用进编辑程序的状态下,一边编辑源程序,一边编译运行,非常方便。但是,Dos单任务操作系统的致命缺陷注定了在Dos下不可能开发出真正的多任务程序。进入Windows3.1时代,这种情况依然没有根本的改变,一次应用只能做一件事。比如数据库查询,除非应用编得很好,在查询期间整个系统将不响应用户的输入。
  进入了Windows NT和Windows 9x时代,情况就有了彻底的改观,操作系统从真正意义上实现了多任务(严格地说,Win9x还算不上)。一个应用程序,在需要的时候可以有许多个执行线程,每个线程就是一个小的执行程序,操作系统自动使各个线程共享CPU资源,确保任一线程都不能使系统死锁。这样,在编程的时候,可以把费时间的任务移到后台,在前台用另一个线程接受用户的输入。对那些对实时性要求比较高的编程任务,如网络客户服务、串行通信等应用时,多线程的实现无疑大大地增强了程序的可用性和稳固性。