美文网首页
浏览器线程

浏览器线程

作者: _hider | 来源:发表于2021-12-11 22:33 被阅读0次

浏览器是多线程的,但是JS是单线程的。

GUI渲染线程
  • 负责渲染浏览器界面,解析HTMLCSS,构建DOM树和Render树,布局和绘制等。
  • 当界面需要重绘Repaint或由于某种操作引发回流Reflow时,该线程就会执行。
  • 要注意的是GUI渲染线程与JS引擎线程是互斥的,当JS引擎执行时GUI线程会被挂起(相当于被冻结了),GUI更新会被保存在一个队列中等到JS引擎空闲时立即被执行。
JS引擎线程
  • JS引擎线程也称为JS内核,负责处理Javascript脚本程序。(例如V8引擎)
  • JS引擎线程负责解析Javascript脚本,运行代码。
  • JS引擎一直等待着任务队列中任务的到来,然后加以处理,无论什么时候都只有一个JS线程在运行JS程序。
  • 同样注意,GUI渲染线程与JS引擎线程是互斥的,所以如果JS执行的时间过长,这样就会造成页面的渲染不连贯,导致页面渲染加载阻塞。
事件触发线程
  • 归属于浏览器而不是JS引擎,用来控制事件循环(可以理解成JS引擎自己都忙不过来,需要浏览器另开线程协助)。
  • JS引擎执行代码块,如鼠标点击,会将对应任务添加到事件线程中。
  • 当对应的事件符合触发条件被触发时,该线程会把事件添加到待处理队列的队尾,等待JS引擎的处理。
  • 注意,由于JS的单线程关系,所以这些待处理队列中的事件都得排队等待JS引擎处理(当JS引擎空闲时才会去执行)。
定时触发器线程
  • setIntervalsetTimeout所在线程。
  • 浏览器定时计数器并不是由JavaScript引擎计数的,(因为JavaScript引擎是单线程的, 如果处于阻塞线程状态就会影响记计时的准确)。
  • 因此通过单独线程来计时并触发定时(计时完毕后,添加到事件队列中,等待JS引擎空闲后执行)。
  • 注意,W3CHTML标准中规定,规定要求setTimeout中低于4ms的时间间隔算为4ms
异步http请求线程
  • XMLHttpRequest在连接后是通过浏览器新开一个线程请求。
  • 将检测到状态变更时,如果设置有回调函数,异步线程就产生状态变更事件,将这个回调再放入事件队列中,再由JavaScript引擎执行。

相关文章

  • 浏览器内核多进程机制

    1.浏览器内核常驻线程 浏览器 GUI 渲染线程 JavaScript 引擎线程 浏览器定时触发器线程 浏览器事件...

  • 浏览器渲染引擎

    一.加载 浏览器的五个常驻线程: 浏览器 GUI 渲染线程 javascript 引擎线程 浏览器定时器触发线程(...

  • 事件循环

    浏览器渲染进程 浏览器的渲染线程大概有以下几种:(1)GUI线程;(2)JS引擎线程;(3)事件触发线程;(4)定...

  • 01.JS执行机制

    浏览器常驻线程 我们常说JS是单线程,但是浏览器中包含了很多线程-- js引擎线程(解释执行js代码,用户输入,网...

  • js有趣的事件循环

    进程&线程 浏览器是多线程的,JS是单线程的(浏览器只分配一个线程来执行JS) 进程大线程小:一个进程中包含多个线...

  • js同步异步编程(2)

    js中的同步异步编程 > 浏览器是多线程的,JS是单线程的(浏览器之分配一个线程来执行JS) > 进程大线程小: ...

  • 浏览器JS运行机制(线程)

    浏览器常驻线程 浏览器的内核是多线程的,它们在内核制控下相互配合以保持同步,一个浏览器至少实现三个常驻线程:jav...

  • 浏览器内核多进程机制

    前言 大家都知道js是基于单线程的,而这个线程就是浏览器的js引擎。但是浏览器内核是多线程,在内核控制下各线程相互...

  • 浏览器渲染页面

    浏览器的工作机制 浏览器包含渲染引擎(也称浏览器内核)和 JavaScript 引擎,它们都是单线程运行。单线程的...

  • 2018-03-19

    浏览器内核包含哪些线程 答:GUI线程、js引擎线程、事件触发线程、网络请求线程、(定时器触发线程) GUI线程是...

网友评论

      本文标题:浏览器线程

      本文链接:https://www.haomeiwen.com/subject/ffqlfrtx.html