760 字
4 分钟
进程和线程

线程与进程#

什么是进程?#

首先, CPU懂吧?是计算机的核心,承当所有的计算任务

官方:进程是CPU资源分配的最小单位

按我的理解:

进程就是进行中的程序,可以独立运行并且拥有自己的资源空间的任务程序

意思就是:

  1. 运行中的程序
  2. 程序所用到的内存和系统资源

浏览器中的每个tab页都是一个进程

什么是线程?#

官方:线程是CPU调度的最小单位

线程是建立 进程的基础上的一次程序运行单位

通俗点就是:线程是程序中的一个执行流,一个进程中可以拥有多个执行流,也就是多个线程

线程分为两种:

  1. 单线程:一个进程中只有一个执行流,就只有一个线程,叫做单线程
  2. 多线程:顾名思义一个进程多个执行流,

进程与线程的区别#

进程是操作系统分配资源的最小单位,线程程序执行的最小单位

一个进程由一个或多个线程组成,线程可以理解为是一个进程中代码的不同执行路线

进程之间相互独立,但同一进程下的各个线程间共享程序的内存空间(包括代码段、数据集、堆等)及一些进程级的资源(如打开文件和信号)

多进程和多线程#

**多进程:**多进程指的是在同一个时间里,同一个计算机系统中如果允许两个或两个以上的进程处于运行状态。多进程带来的好处是明显的,比如大家可以在网易云听歌的同时打开编辑器敲代码,编辑器和网易云的进程之间不会相互干扰

**多线程:**多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务,也就是说允许单个程序创建多个并行执行的线程来完成各自的任务

JS为什么是单线程#

JS的单线程,与它的用途有关。作为浏览器脚本语言,JavaScript的主要用途是与用户互动,以及操作DOM。这决定了它只能是单线程,否则会带来很复杂的同步问题。比如,假定JavaScript同时有两个线程,一个线程在某个DOM节点上添加内容,另一个线程删除了这个节点,这时浏览器应该以哪个线程为准?

还有人说js还有Worker线程,对的,为了利用多核CPU的计算能力,HTML5提出Web Worker标准,允许JavaScript脚本创建多个线程,但是子线程是完 全受主线程控制的,而且不得操作DOM

所以,这个标准并没有改变JavaScript是单线程的本质

进程和线程
https://nollieleo.github.io/posts/进程和线程/
作者
翁先森
发布于
2021-06-10
许可协议
CC BY-NC-SA 4.0