博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
浏览器的线程和进程
阅读量:7052 次
发布时间:2019-06-28

本文共 554 字,大约阅读时间需要 1 分钟。

参考文章

浏览器内核是多线程,在内核控制下各线程相互配合以保持同步,一个浏览器通常由以下常驻线程组成:

GUI 渲染线程

  • 负责渲染浏览器界面,包括解析HTML、CSS、构建DOM树、Render树、布局与绘制等
  • 当界面需要重绘(Repaint)或由于某种操作引发回流(reflow)时,该线程就会执行
  • GUI渲染线程与JS引擎线程互斥

JavaScript引擎线程

  • JS内核,也称JS引擎,负责处理执行javascript脚本
  • 等待任务队列的任务的到来,然后加以处理,浏览器无论什么时候都只有一个JS引擎在运行JS程序

定时触发器线程

  • setInterval与setTimeout所在线程
  • 当计时完成被触发,事件会被添加到事件队列,等待JS引擎空闲了执行
  • 注意:W3C的HTML标准中规定,setTimeout中低于4ms的时间间隔算为4ms

事件触发线程

  • 听起来像JS的执行,但是其实归属于浏览器,而不是JS引擎,用来控制时间循环
  • 当JS引擎执行代码块如setTimeout时(也可来自浏览器内核的其他线程,如鼠标点击、AJAX异步请求等),会将对应任务添加到事件线程中

异步http请求线程

  • 线程如果检测到请求的状态变更,如果设置有回调函数,该线程会把回调函数添加到事件队列,同理,等待JS引擎空闲了执行

转载地址:http://vevol.baihongyu.com/

你可能感兴趣的文章
二、ansible配置简要介绍
查看>>
解决docker容器中无ifconfig命令和ping命令问题
查看>>
CHAR、TCHAR、WCHAR_T之间的区别与问题
查看>>
sql小计合计
查看>>
安装Java
查看>>
Ubuntu Linux输入法fcitx方块乱码解决设置
查看>>
node递归批量重命名指定文件夹下的文件
查看>>
python if not用法
查看>>
python-2
查看>>
选择器
查看>>
springMVC参数的获取区别
查看>>
SSH报错记录
查看>>
BZOJ4543/BZOJ3522 [POI2014]Hotel加强版(长链剖分)
查看>>
Python中文转为拼音
查看>>
advacing lnux program --4.1.5 Thread Attributes[copy]
查看>>
SQL SERVER大话存储结构(1)
查看>>
更改SQLServer实例默认字符集
查看>>
MVC设计模式
查看>>
NSBundle和XIB加载
查看>>
Mybatis——SSM
查看>>