js单线程理解

一.进程和线程

1.进程: 是CPU资源分配的最小单位(是能拥有资源和独立运行的最小单位)。

2.线程: 是CPU调度的最小单位(线程是建立再进程的基础上的一次程序运行单位,一个进程可以有多个线程

3.单线程和多线程: 都是指再一个进程内的单和多

二.浏览器是多进程的,每个窗口都是一个进程,可以打开任务管理器查看到多个进程任务

三.浏览器包含哪些进程

1.主进程

  •  协调控制其他子进程(创建,销毁)
  • 浏览器页面显示,用户交互,前进,后退,收藏
  • 将渲染进程得到的内存中的Bitmap,绘制到用户界面上
  • 处理不可见操作,网络请求,文件访问等

2.第三方插件进程

  • 每种类型的插件对应一个进程,仅当使用改插件的时候才创建

3.GPU进程

  • 勇于3D绘制等

4.渲染进程,就是我们说的浏览器内核

  • 负责页面渲染,脚本执行,事件处理等
  • 每一个tab页一个渲染进程

四.浏览器内核(渲染进程)

1.GUI渲染进程

  • 负责渲染页面,布局和绘制
  • 页面需要重绘和回流时,改现成就会执行
  • 与js引擎线互斥,防止渲染结果不可预期

2.JS引擎线程

  • 负责处理解析和执行javascript脚本程序
  • 只有一个JS引擎线程(单线程)
  • 与GUI渲染线程互斥,防止渲染结果不可预期

3.事件触发线程

  • 用来控制时间循环(鼠标点击、setTimeout、ajax等)
  • 当时间满足出发条件时,将事件放入到JS引擎所在的执行队列中

4.定时触发器线程

  • setInterval与seTimeout所在的线程
  • 定时任务并不是由JS引擎计时的,是由定时触发线程计时的
  • 计时完毕后,通知事件触发线程

5.异步http请求线程

  • 浏览器有一个单独的线程用于处理AJAX请求
  • 当请求完成时,若有回调函数,通知事件触发线程
原文地址:https://www.cnblogs.com/wuxu-dl/p/14903422.html