购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.3 进程与线程简介

军师,现在你可以说说那个什么“进城”、“县城”之类的东西了吧?

是“进程”与“线程”。

反正俺也不懂,你就讲吧。

嗯,我这就慢慢道来。

3.3.1 进程与线程的概述

1.进程

对应用程序来说,进程就像一个大容器。当应用程序运行时,就好比被装入到这个容器中了,同时,还可以往该容器中加入其他配件,例如,应用程序在运行时所需的变量数据和需要引用的DLL文件等。当应用程序被重复运行时,系统会找一个新的进程容器来容纳第二次运行时键入的新配件。

进程是操作系统结构的基础;是一个正在执行的程序;是计算机中正在运行的程序实例;是可以分配给处理器并由处理器执行的一个实体;是由单一顺序的执行显示,一个当前状态和一组相关的系统资源所描述的活动单元。

2.线程

是进程中的一个实体,是被系统独立调度和分派的基本单位。线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其他线程共享进程所拥有的全部资源。一个线程可以创建和撤销另一个线程,同一进程中的多个线程之间可以并发执行。由于线程之间的相互制约,致使线程在运行中体现出间断性。线程因此有就绪、阻塞和运行三种基本状态。线程是程序中一个单一的顺序控制流程。在单个程序中同时运行多个线程,完成不同的工作称为多线程。

怎么听起来这两个东西差不多呢,它们的区别在哪里?

我还没说它们之间的异同呢,你听好了。

3.3.2 进程与线程的异同

进程由进程控制块、程序段、数据段三部分组成。一个进程可以包含若干线程,线程可以帮助应用程序同时做几件事(比如一个线程向磁盘写入文件,另一个则接收用户的按键操作并及时做出反应,互不干扰),在程序运行中,系统首先要做的就是为该程序进程建立一个默认线程,默认线程也称为主线程。然后,程序可以根据需要自行添加或删除相关的线程,是可并发执行的程序。数据集合的运行过程,是系统进行资源分配和调度的一个独立单位,也称为活动、路径或任务,它有两方面性质:活动性和并发性。进程可以划分为运行、阻塞、就绪三种状态,并随一定条件而相互转化:就绪—运行,运行—阻塞,阻塞—就绪。

线程和进程的区别在于,任意两个进程有不同的代码和数据空间,而多个线程则共享数据空间,每个线程有自己的执行堆栈和程序计数器为其执行上下文。线程的运行需要占用计算机的内存资源和CPU。

简而言之,一个程序至少有一个进程,一个进程至少有一个线程。线程的划分尺度小于进程,使得多线程程序的并发性高。另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。

神呐,请听听军师在胡说八道些什么吧!他让俺昏昏欲睡,欲睡昏昏,就是听不懂。

多说无益,这两个概念是需要你多加揣摩才行的。

我需要一听就懂,一摸就会,马上成为高得不能再高的高端职业黑客。

这倒也不难。

真的?

蒸的,还煮的呢。你给我一百元,我告诉你。

太好了,拿去。

恭喜你,你已经被我黑了,你学会了吧!

……原来是骗我钱啊!

除了骗子,你认为还有什么可以不劳而获。 V2Rruk2TdI1KKHLU95VpzzdGc9mIPnyWqUDLbCxzOkOw2ZJ4obihiPCK+RigPHPP

点击中间区域
呼出菜单
上一章
目录
下一章
×