线程 VS 进程

什么是并行处理

计算机中的并行处理就是同一时刻处理多个任务,比如我们要计算下面这三个表达式的值,并显示出结果。

A = 1+2
B = 20/5
C = 7*8

在编写代码的时候,我们可以把这个过程拆分为四个任务:

  • 任务 1 是计算 A=1+2;
  • 任务 2 是计算 B=20/5;
  • 任务 3 是计算 C=7*8;
  • 任务 4 是显示最后计算的结果。

正常情况下程序可以使用单线程来处理,也就是分四步按照顺序分别执行这四个任务。

如果采用多线程,会怎么样呢?我们只需分“两步走”:第一步,使用三个线程同时执行前三个任务;
第二步,再执行第四个显示任务。

通过对比分析,你会发现用单线程执行需要四步,而使用多线程只需要两步。因此,使用并行处理能大大提升性能

线程 VS 进程

多线程可以并行处理任务,但是线程是不能单独存在的,它是由进程来启动和管理的

什么是进程

一个进程就是一个程序的运行实例。详细解释就是,启动一个程序的时候,操作系统会为该程序创建一块内存,用来存放代码、运行中的数据和一个执行任务的主线程,我们把这样的一个运行环境叫进程

单线程与多线程的进程对比图

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


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

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

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

    线程之间共享进程中的数据示意图

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

  1. 当一个进程关闭之后,操作系统会回收进程所占用的内存
    当一个进程退出时,操作系统会回收该进程所申请的所有资源;即使其中任意线程因为操作不当导致内存泄漏,当进程退出时,这些内存也会被正确回收。

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 井发和并行井发和并行是两个非常容易被混淆的概念。它都可以表示两个或者多个任务一起执行,但是偏重点有些不同。并发偏重...
    InitialX阅读 368评论 0 2
  • 1. 简介 用户打开浏览器,其实就是打开了浏览器应用程序。那么什么是程序呢?我们常说浏览器是多线程的,JS 是单线...
    love丁酥酥阅读 3,554评论 0 6
  • 线程基础,线程之间共享与协作 1.基础概念 进程概念:进程是程序运行资源分配的最小单位进程是操作系统进行资源分配的...
    Jack_Ou阅读 289评论 0 0
  • 前言 在文章开始之前,我们有必要简单了解下线程与进程的概念以及计算机的并行处理。 有必要的话也可以了解一下浏览器的...
    C_Lz阅读 747评论 0 1
  • 线程与进程 简单来讲,进程就是CPU资源分配的最小单位,而线程则是CPU调度的最小单位。要介绍进程与线程的话,需要...
    Alias_3b6d阅读 397评论 0 1