浏览器进程, 线程区别?
2020-05-10 本文已影响0人
风雅欢乐
- 进程是CPU分配资源的最小单位(是能拥有资源和独立运行的最小单位)
- 线程是CPU调度的最小单位(线程是建立在进程的基础上的一次程序运行单位, 一个进程中可以有多个线程)
浏览器是多进程的
浏览器是多进程的, 可以简单的理解为, 每打开一个标签页, 就相当于创建了一个独立的浏览器进程.
浏览器包含哪些主要进程
- Browser进程, 主进程, 负责协调和主控, 只有唯一的一个, 负责资源管理, 下载, 页面管理, 创建, 销毁, 用户交互等
- 第三方插件进程, 每种类型的插件对应一个进程
- GPU进程, 最多一个, 用于3D绘制等
- Renderer进程, 渲染进程, 负责页面渲染, 脚本执行, 事件处理等
Renderer进程包含哪些主要线程
通常前端领域所说的内容, 都发生于渲染进程内. 渲染进程包括了如下主要的常驻线程:
- GUI渲染线程, 负责解析HTML, CSS, 构建DOM树和RenderObject树, 与JS引擎线程互斥
- JS引擎线程, 负责处理JavaScript脚本程序
- 事件触发线程, 控制事件循环, 当对应的事件触发时, 将事件处理函数添加到队列
- 计时线程, 负责计时, 并将回调函数添加到队列
- 网络线程, 负责进行http请求, 并将状态变更事件添加到队列