当前位置:网站首页>浏览器线程
浏览器线程
2022-07-29 15:06:00 【背藏玫瑰】
浏览器基础结构主要包含七个部分:
用户界面:用户所看到的内容和与之交互的功能组件,比如按钮、表单等等
浏览器引擎:负责控制和管理下一级的渲染引擎
渲染引擎:解析用户请求的内容并返回
网络:负责处理网关相关事宜,比如http服务
UI后端:负责绘制一些提示框等UI组件,底层使用的是操作系统的用户接口
js解析器:负责解析和执行js代码
数据存储:负责存储数据如cookie等
浏览器是多线程的,js是单线程的
1.GUI渲染线程
负责渲染浏览器界面,解析HTML,CSS,构建DOM树和RenderObject树,布局和绘制等。
当界面需要重绘(Repaint)或由于某种操作引发回流(reflow)时,该线程就会执行
注意,GUI渲染线程与JS引擎线程是互斥的,当JS引擎执行时GUI线程会被挂起(相当于被冻结了),GUI更新会被保存在一个队列中等到JS引擎空闲时立即被执行。
2.JS引擎线程
也称为JS内核,负责处理Javascript脚本程序。(例如V8引擎)
JS引擎线程负责解析Javascript脚本,运行代码。
JS引擎一直等待着任务队列中任务的到来,然后加以处理,一个Tab页(renderer进程)中无论什么时候都只有一个JS线程在运行JS程序
同样注意,GUI渲染线程与JS引擎线程是互斥的,所以如果JS执行的时间过长,这样就会造成页面的渲染不连贯,导致页面渲染加载阻塞。
3.事件触发线程
归属于浏览器而不是JS引擎,用来控制事件循环(可以理解,JS引擎自己都忙不过来,需要浏览器另开线程协助)
当JS引擎执行代码块如setTimeOut时(也可来自浏览器内核的其他线程,如鼠标点击、AJAX异步请求等),会将对应任务添加到事件线程中
当对应的事件符合触发条件被触发时,该线程会把事件添加到待处理队列的队尾,等待JS引擎的处理
注意,由于JS的单线程关系,所以这些待处理队列中的事件都得排队等待JS引擎处理(当JS引擎空闲时才会去执行)
4.定时触发器线程
传说中的setInterval与setTimeout所在线程
浏览器定时计数器并不是由JavaScript引擎计数的,(因为JavaScript引擎是单线程的, 如果处于阻塞线程状态就会影响记计时的准确)
因此通过单独线程来计时并触发定时(计时完毕后,添加到事件队列中,等待JS引擎空闲后执行)
注意,W3C在HTML标准中规定,规定要求setTimeout中低于4ms的时间间隔算为4ms。
5.异步http请求线程
在XMLHttpRequest在连接后是通过浏览器新开一个线程请求
将检测到状态变更时,如果设置有回调函数,异步线程就产生状态变更事件,将这个回调再放入事件队列中。再由JavaScript引擎执行。
边栏推荐
- 数据分析(二)
- 极市直播丨严彬-Unicorn:走向目标跟踪的大一统(ECCV2022 Oral)
- 浮点数内存存储问题
- 【 LeetCode 】 88. Merging two orderly array
- CSP:重庆八中宏帆初级中学校新初二编程社C2024liuyanjia暑假一期集训总结(2/6))
- Mysql数据库及表的建立
- 文本处理之xml
- 【7.22-7.29】写作社区精彩技术博文回顾
- Immediate experience with CTS - | D further promotion application equipment compatibility
- 数商云SCM供应链系统方案服务亮点:生产管理更智能、产业供应链协同管理更便捷
猜你喜欢

ES6 从入门到精通 # 11:Map 数据类型
![[yolov7 series two] positive and negative sample allocation strategy](/img/8d/5f04d33b957f3ce58243ea807c1fe2.png)
[yolov7 series two] positive and negative sample allocation strategy

Immediate experience with CTS - | D further promotion application equipment compatibility

如何在MySQL中执行SQL?

APP为什么用JSON协议与服务端交互:序列化相关知识

Qt学习第一天

UFLO:5、启动任务并自动完成第一个人工任务

bit field in c language

Linux安装MySQL(超详细)

MySQL索引常见面试题(2022版)
随机推荐
Flink SQL Hudi 实战
教程篇(7.0) 07. 诊断和故障排除 * FortiClient EMS * Fortinet 网络安全专家 NSE 5
Google Play 政策更新 | 2022 年 7 月
电子元器件行业B2B交易系统:规范企业交易流程,提升销售管理效率
Qt learning on the first day
Guangzhou fire: high temperature weather frequent fire fire safety should not be ignored
NLP自然语言处理-机器学习和自然语言处理介绍(三)
深度卷积生成对抗网络
浮点数内存存储问题
双线机房、多线机房、BGP机房的关系和对比
即刻体验 | 借助 CTS-D 进一步提升应用设备兼容性
展讯模块读写IMEI
You need to know about the digital transformation of eight guiding principles
小米法务部:成功打击一处伪造Redmi蓝牙耳机窝点,查扣假冒伪劣产品2032个
Linux环境 redis完整配置及启动命令
NLP自然语言处理-机器学习和自然语言处理介绍(二)
稳稳当当的生活
将博客搬至CSDN
Mysql数据库及表的建立
用Asm生成Class字节码文件