概念解析
-
进程:操作系统分配调度资源的最小单位,每个软件程序至少一个进程
-
线程:程序执行的最小单元
-
多进程:一个操作系统同时运行多个应用程序、一个浏览器同时打开多个tab页面
-
多线程:浏览器内核多线程协作完成渲染工作
浏览器进程划分
- 浏览器主进程(一个),浏览器tab切换、回退刷新等操作
- 网络进程,负责网络资源加载(一个)
- GPU进程(一个),负责像素点绘制
- 插件进程(一个插件一个)
- 渲染进程(一个tab一个),多个tab互不影响
浏览器内核(渲染引擎进程)
1. GUI渲染线程
- 负责解析HTML、CSS构建DOM数和 render树
- 时间:重绘、回流时会执行
- 特点:与JS引擎互斥
2. JavaScript引擎线程
-
作用:处理JS脚本程序,编译JS代码,如V8引擎,Chrome和Node.js都在用
-
起因:JS语言是一门单线程语言,它的异步和多线程是通过Event Loop事件循环来实现的
-
特点:与GUI引擎互斥
-
构成:内存堆(内存分配)、调用栈(代码执行)
-
由于是单线程,通过事件循环机制来实现异步任务
3. 事件触发线程
- 控制事件循环的节奏,当执行栈(js主线程执行完空闲后),从消息队列中取出一个任务放入执行栈中执行
- 执行栈为空后,再从消息队列中取出一个放入执行栈中执行
- 维护一个消息队列
4. 定时器触发线程
- setTimeout、setInterval
5. 异步请求线程
- 发送网络请求获取数据
作者:alex9968
链接:https://juejin.cn/post/6854573217655291918
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。