浏览器的进程模型
什么是进程?
程序运行需要一个自己专属的内存空间。
进程的目的就是为了想独立的,即使要通信,也需要双方同意。每个应用至少有一个进程
什么是线程?
进入进程后,运行代码的过程叫线程
一个进程里至少有一个线程,进程开启后会自动创建一个线程来执行,该线程叫主线程,一个进程里有多个线程
浏览器有哪些进程和线程?
浏览器是多进程多线程的应用程序,当启动浏览器的时候,浏览器会自动启动多个进程(浏览器进程,网络进程,渲染进程)
1. ##### 浏览器进程
主要负责界面显示、用户交互、子进程管理等。浏览器进程内部会启动多个线程处理不同的任务
2. ##### 网络进程
负责加载网络资源,网络进程内部会启动多个线程来处理不同的网络任务
3. ##### 渲染进程
渲染进程启动后,会开启一个渲染主线程,主要负责执行HTML、CSS、JS代码
默认情况下,浏览器会为每个标签页开启一个新的渲染进程,以保证不同的标签页之间不互相影响
渲染主线程是如何工作的?
渲染主线程是浏览器中最为繁琐的线程。主要处理的任务有:
- 解析HTML
- 解析CSS
- 计算样式 (例子:rem——px)
- 布局
- 处理图层(z-index)
- 每秒刷新页面
- 执行JS代码
- 执行事件处理函数
- 执行计时器函数
- ..........
思考: 为什么渲染进程不适用多个线程来处理这些事情?(我不知道,欢迎评论)