浏览器是多进程的,浏览器每一个 tab 标签都代表一个独立的进程(也不一定,因为多个空白 tab 标签会合并成一个进程),浏览器内核(浏览器渲染进程)属于浏览器多进程中的一种。
浏览器每个进程有多个线程,主要有以下线程
GUI 渲染线程:
负责渲染页面,解析 HTML,CSS 构成 DOM 树等,当页面重绘或者由于某种操作引起回流都会调起该线程。
和 JS 引擎线程是互斥的,当 JS 引擎线程在工作的时候,GUI 渲染线程会被挂起,GUI 更新被放入在 JS 任务队列中,等待 JS 引擎线程空闲的时候继续执行。
JS 引擎线程:
单线程工作,负责解析运行 JavaScript 脚本。
和 GUI 渲染线程互斥,JS 运行耗时过长就会导致页面阻塞。
事件触发线程:
当事件符合触发条件被触发时,该线程会把对应的事件回调函数添加到任务队列的队尾,等待 JS 引擎处理。
定时器触发线程:
浏览器定时计数器并不是由 JS 引擎计数的,阻塞会导致计时不准确。
开启定时器触发线程来计时并触发计时,计时完成后会被添加到任务队列中,等待 JS 引擎处理。
http 请求线程:
http 请求的时候会开启一条请求线程。
请求完成有结果了之后,将请求的回调函数添加到任务队列中,等待 JS 引擎处理。
JavaScript引擎一直等待着任务队列中任务的到来.由于单线程关系,这些任务得进行排队,一个接着一个被引擎处理
相关文章
- 10-31【主机渗透】获取远程主机保存的RDP凭据密码
- 10-31不懂技术,也能绘制复杂的《中国式》报表
- 10-31devtoolset对应gcc的版本
- 10-31gcc -L、-Wl,-rpath, -Wl,-rpath-link的区别
- 10-31Makefile中的ifeq 多条件使用
- 10-31[IoT安全][翻译]ARM芯片FLASH读出保护机制(RDP)的绕过策略
- 10-31Sublime3 中在行尾增加一个分号的方法
- 10-31makefile的一些学习笔记
- 10-31Winform中只运行运行一个实例的方法
- 10-31RDO(Remote Desktop Organizer)远程连接服务器提示“远程计算机需要网络级别身份验证,而您的计算机不支持该验证。请联系您的系统管理”