浏览器渲染之五大线程

浏览器的渲染进程,包含5个线程

1 、GUI 渲染线程

负责浏览器页面渲染,解析html,css,构建Dom树,构建css树,页面绘制;
与JS引擎进程互斥;

2、JS 引擎线程

负责解析js脚本,运行代码,每一个tab页只有一个js引擎线程执行js。如果js线程执行时间过长,会造成页面渲染不连贯,阻塞页面渲染

3、事件触发线程

用来控制事件循环,当js执行setTimeout代码片段等(也可是来自浏览器内核的其他线程,如鼠标点击、AJAX异步请求等),会将对应任务放入事件触发线程中,当对应的事件符合触发条件时,该线程会把对应事件放到待处理队列,等待js引擎空闲时处理

4、定时器 触发线程 ,即setTimeout, setInterval计时器

浏览器计数并不是js引擎来完成,因为js是单线程的,如果来完成计数,不能保证计数的准确性,所以由专门 定时器线程来进行计数,并触发定时器,计时完毕后,添加到事件队列中,等待js引擎空闲时执行。
所以定时器的任务在设定的时间点并不一定准时执行,定时器只是在指定的时间点把任务添加到事件队列。

5、异步 http请求线程

XMLHttpRequest 连接后通过浏览器新开一个 http请求线程,当检测到状态变更时,如果设置有回调函数,异常线程就产生状态变更事件,把回调函数添加到事件队列中,等待js引擎空闲时执行

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容