事件循环原理
2023-11-22 本文已影响0人
crush_d872
浏览器进程模型
浏览器是一个多进程多线程的应用程序
为了避免互相影响,为了减少连环崩溃的几率,当启动浏览器后,它会自启动多个进程
![](https://img.haomeiwen.com/i14093317/14769601ea8611fc.png)
1.浏览器进程
主要负责界面显示、用户交互、子进程管理等。浏览器进程内部会启动多个线程处理不同的任务
2.网络进程
负责加载网络资源。网络进程内部会启动多个线程来处理不同的网络任务
3.渲染进程
渲染进程启动后,会开启一个渲染主线程,主线程负责执行HTML、CSS、JS代码。
默认情况下,浏览器会为每个标签页开启一个新的渲染进程,以保证不同的标签页之间不互相影响
渲染主线程是如何工作的?
![](https://img.haomeiwen.com/i14093317/13e07901f796cc8a.png)
1.在最开始的时候,渲染主线程会进入一个无限循环
2.在每一次循环会检查消息队列中是否有任务存在。如果有,就取出第一个任务执行,执行完一个后进入下一次循环;如果没有,则进入休眠状态
3.其他所有线程(包括其他进程的线程)可以随时向消息队列添加任务。新任务会加到消息队列的末尾。在添加新任务时,如果主线程是休眠状态,则会将其唤醒以继续循环拿任务