单线程和多线程的区别性能吞吐量

单线程和多线程的区别性能吞吐量

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

  多线程就是进程有多个线程

  多线程处理的优点

  同步应用程序的开发比较容易,但由于需要在上一个任务完成后才能开始新的任务,所以其效率通常比多线程应用程序低。

如果完成同步任务所用的时间比预计时间长,应用程序可能会不响应。

多线程处理可以同时运行多个过程。

例如,文字处理器应用程序在您处理文档的同时,可以检查拼写(作为单独的任务)。

由于多线程应用程序将程序划分成独立的任务,因此可以在以下方面显著提高性能:

  多线程技术使程序的响应速度更快,因为用户界面可以在进行其他工作的同时一直处于活动状态。

  当前没有进行处理的任务可以将处理器时间让给其他任务。

  占用大量处理时间的任务可以定期将处理器时间让给其他任务。

  可以随时停止任务。

  可以分别设置各个任务的优先级以优化性能。

  是否需要创建多线程应用程序取决于多个因素。

在以下情况下,最适合采用多线程处理:

  耗时或大量占用处理器的任务阻塞用户界面操作。

  各个任务必须等待外部资源(如远程文件或 internet 连接)。

  例如,用于跟踪 web 页上的链接并下载满足特定条件的文件的 internet 应用程序“robot”。

这种应用程序可以依次同步下载各个文件,也可以使用多线程同时下载多个文件。

多线程方法比同步方法的效率高很多,因为即使在某些线程中远程 web 服务器的响应非常慢,也可以下载文件。

cache..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=#0

  下面是多线程的例子

  还在dos时代,人们就在寻求一种多任务的实现。

于是出现了tsR类型的后台驻留程序,比较有代表性的有side Kick、Vsafe等优秀的tsR程序,这类程序的出现和应用确实给用户使用计算机带来了极大的方便,比如side Kick,我们编程可以在不用进编辑程序的状态下,一边编辑源程序,一边编译运行,非常方便。

但是,dos单任务操作系统的致命缺陷注定了在dos下不可能开发出真正的多任务程序。

进入windows3.1时代,这种情况依然没有根本的改变,一次应用只能做一件事。

比如数据库查询,除非应用编得很好,在查询期间整个系统将不响应用户的输入。

  进入了windows nt和windows 9x时代,情况就有了彻底的改观,操作系统从真正意义上实现了多任务(严格地说,win9x还算不上)。

一个应用程序,在需要的时候可以有许多个执行线程,每个线程就是一个小的执行程序,操作系统自动使各个线程共享cPu资源,确保任一线程都不能使系统死锁。

这样,在编程的时候,可以把费时间的任务移到后台,在前台用另一个线程接受用户的输入。

对那些对实时性要求比较高的编程任务,如网络客户服务、串行通信等应用时,多线程的实现无疑大大地增强了程序的可用性和稳固性。

首页