线程VS进程

Posted linm

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线程VS进程相关的知识,希望对你有一定的参考价值。

线程 VS 进程

多线程可以并行处理任务,但是线程是不能单独存在的,它是由进程来启动和管理的。那什么又是进程呢?一个进程就是一个程序的运行实例。详细解释就是,启动一个程序的时候,操作系统会为该程序创建一块内存,用来存放代码、运行中的数据和一个执行任务的主线程,我们把这样的一个运行环境叫进程。

技术图片

 

从图中可以看到,线程是依附于进程的,而进程中使用多线程并行处理能提升运算效率。

总结来说,进程和线程之间的关系有以下 4 个特点。

1. 进程中的任意一线程执行出错,都会导致整个进程的崩溃。

技术图片

 

2. 线程之间共享进程中的数据。

如下图所示,线程之间可以对进程的公共数据进行读写操作。

技术图片

 

 

 从上图可以看出,线程 1、线程 2、线程 3 分别把执行的结果写入 A、B、C 中,然后线程 2 继续从 A、B、C 中读取数据,用来显示执行结果。

3. 当一个进程关闭之后,操作系统会回收进程所占用的内存。当一个进程退出时,操作系统会回收该进程所申请的所有资源;即使其中任意线程因为操作不当导致内存泄漏,当进程退出时,这些内存也会被正确回收。比如之前的 IE 浏览器,支持很多插件,而这些插件很容易导致内存泄漏,这意味着只要浏览器开着,内存占用就有可能会越来越多,但是当关闭浏览器进程时,这些内存就都会被系统回收掉。

4. 进程之间的内容相互隔离。进程隔离是为保护操作系统中进程互不干扰的技术,每一个进程只能访问自己占有的数据,也就避免出现进程 A 写入数据到进程 B 的情况。正是因为进程之间的数据是严格隔离的,所以一个进程如果崩溃了,或者挂起了,是不会影响到其他进程的。如果进程之间需要进行数据的通信,这时候,就需要使用用于进程间通信(IPC)的机制了。

 

以上是关于线程VS进程的主要内容,如果未能解决你的问题,请参考以下文章

进程vs线程

多线程总结之旅:线程VS进程

进程vs线程

Python 开启线程的2中方式,线程VS进程(守护线程互斥锁)

进程 vs. 线程

Python多进程vs多线程