美文网首页
浏览器线程

浏览器线程

作者: 刘程源 | 来源:发表于2018-12-26 12:12 被阅读0次

浏览器是多进程的,浏览器至少包括如下进程

1.主进程
输入url,前进,后退,下载等
2.渲染进程
页面渲染,js执行等

渲染进程

渲染进程是多线程的,包括
1.JS引擎线程
2.GUI渲染线程
3.事件线程
4.定时线程
5.异步请求线程
6.Worker

JS引擎线程

js引擎单线程为ecmascript描述的规范,指js引擎有且只有一个
其他线程如果需要执行js,最终需要通过特定的语法,回调一段代码块,而这个代码块依然由唯一的js引擎进行执行

GUI渲染线程

主要用于重绘和回流,属于即时执行,一般没有返回结果,即没有可写代码块的地方(有的话很容易无限循环)
特殊情况是整个html渲染时的生命周期,会通过全局事件如DOMContentLoaded,onresize进行描述

最大的特点是与js互斥
为了完成60FPS,一次渲染大概要16ms内
又与js互斥,js函数执行的最长时间也是16ms

事件线程

参考js事件模型设计
事件触发后,将具体指向丢给js(队列)依次进行处理

参考页面卡时,对按钮多次点击无反应后,会在某一点突然鬼畜
或者随便找个节点,注入以下事件,疯狂乱点,看看能执行几次

$0.onclick = ()=>{
    //等待一秒
    var now = Date.now();
    while(Date.now() - now<1000){

    }
    console.log('over')
}

事件的触发在事件线程上,对开发人员绝对封闭,在不变源码的情况下把单击变双击是不存在的,触发的内容(代码块),实在 JS引擎线程上

定时线程

参考setTimeout

本身就是无限轮询的一段程序
时间一到,将需要执行的函数丢该 JS引擎线程的队列中
大概是4ms的间隔,不执行复杂的计算,单纯的获取指向,丢给队列,比GUI简单多了

异步请求线程

通过GUI开启,如初始化,动态添加script等方式,遵循GUI的生命周期规则,即等待js下载并执行完在继续
通过xhr开启,onreadystatechange中的回调即为回调代码块

xhr是解决复杂计算的解决思路,不光是前端计算慢,更多的是精度

Worker

开辟新线程,但不能操作dom

再次强调,js单线程指js解析引擎有且只有一个,其他线程需要解析js都需要通过回调/异步处理的方式交给js引擎,而不能自己创建引擎自行处理

相关文章

  • 浏览器内核多进程机制

    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/txqclqtx.html