浏览器的线程和进程

参考文章javascript

浏览器进程和线程java

浏览器多进程与js线程web

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

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引擎空闲了执行
相关文章
相关标签/搜索