什么是多线程和多重处理?

■什么是多线程?

多线程就是让多个线程并行工作来完成多个任务,从而提高系统的效率。当需要同时完成多个任务时,就实现了线程。

使用线程的好处如下:

使用线程可以将占用很长时间的任务放在程序中进行后台处理。

用户界面可以更吸引人,例如,如果用户点击按钮来触发某些事件的处理,则可以弹出进度条来显示处理的进度。

可以加快程序的运行速度。

在用户输入、文件读写、网络收发数据等一些等待任务的实现中,线程都在游动。在这种情况下,我们可以释放一些宝贵的资源如内存占用等等。

====

■什么是多流程?

进程是计算机上程序的执行活动。当你运行一个程序时,你启动了一个进程。很明显,程序是死的(静态),流程是活的(动态)。进程可以分为系统进程和用户进程。所有用来完成操作系统各种功能的进程都是系统进程,是运行状态下的操作系统本身;我不需要谈论用户进程。您启动的所有进程都是用户进程。进程是操作系统分配资源的单位。

在Windows下,一个进程被细分为线程,也就是说,在一个进程下有许多更小的单元可以独立运行。

同时,如果允许两个或两个以上的进程在同一个计算机系统中运行,这就是多任务处理。现代操作系统几乎都是多任务操作系统,可以同时管理多个进程的运行。多任务处理的好处显而易见。比如你可以一边听mp3一边上网,同时你甚至可以把下载的文档打印出来,这些任务之间没有任何干扰。那么这里就涉及到并行的问题了。俗话说,不能一心二用,电脑也是一样。原则上,一个CPU只能分配给一个进程来运行这个进程。我们平时用的电脑只有一个CPU,也就是说,只有一颗心。要使其一机多用,同时运行多个进程,就必须使用并发技术。并发技术的实现相当复杂,最容易理解的就是“时间片轮换进程调度算法”。其思想简单介绍如下:在操作系统的管理下,所有正在运行的进程轮流使用CPU,并且允许每个进程占用CPU的时间非常短(例如10毫秒),这样用户就根本感觉不到CPU在轮流为多个进程服务,就好像所有进程都在连续运行一样。但实际上,任何时候都只有一个进程占用CPU。

如果一台计算机有多个CPU,情况就不一样了。如果进程的数量少于CPU的数量,可以将不同的进程分配给不同的CPU运行,这样就真正做到了多个进程同时运行,这就是并行。但是如果进程数大于CPU数,还是需要使用并发技术。

在Windows中,CPU分配是基于线程的,一个进程可能由多个线程组成。这时,情况就比较复杂了,但简而言之,有如下关系:

线程总数

线程总数>;CPU数量:并发运行

并行运算的效率明显高于并发运算,所以在多CPU的计算机中,多任务的效率更高。但是,如果在多CPU的计算机中只有一个进程(线程)在运行,多CPU的优势就无法发挥出来。

这就涉及到多任务操作系统的问题。多任务操作系统(如Windows)的基本原理是操作系统将CPU的时间片分配给多个线程,每个线程在操作系统指定的时间片内完成(注意这里的多个线程属于不同的进程)。操作系统不断地从一个线程的执行切换到另一个线程的执行,以此类推。就像多个线程一起执行。因为这些线程属于不同的进程,所以在我们看来是多个进程在同时执行,从而实现了多任务。哎呦,绕了好远。