美文网首页
【浏览器】浏览器进程

【浏览器】浏览器进程

作者: Adder | 来源:发表于2021-07-23 15:39 被阅读0次

    之前被问到,js引擎是单线程的话,那么是如何处理异步的请求的;后来发现自己对浏览器的进程、线程这块,还是没把握住...
    所以记录一下补充巩固的内容

    浏览器主要分为四大进程

    • 主进程

    负责浏览器界面的显示与交互,各个页面的管理,创建和销毁其他进程。

    • 第三方插件进程

    每种类型的插件对应一个进程,使用当前插件时,才会创建

    • GPU进程

    最多只有一个,用于3D绘制

    • 渲染进程(我们常关注的一个过程)

    浏览器渲染进程也是浏览器内核,内部是多线程的。主要负责页面渲染,脚本执行,事件处理等等

    回到最初的那个问题,
    Q: 单线程的js如何处理异步请求?
    A: 浏览器的渲染进程是多线程的,有js引擎线程,也有专门的异步请求处理线程。

    主要分为以下几个线程:

    1.JS引擎线程

    与GUI互斥;执行JS脚本,任务队列空的时候,才会执行GUI线程

    2.GUI(图形用户界面)渲染线程

    与JS引擎互斥,其中如果JS脚本执行时间过长的话,会导致页面渲染阻塞,渲染中断

    3.HTTP异步处理线程

    XMLHttpRequest 连接后,将一些异步回调加入到JS线程的尾部队列中

    4.定时器处理线程

    将计时(setTimeout、setInterval所在线程)结束的待执行任务加入到JS线程中

    5.事件触发线程

    用户点击等动作触发的事件方法,会被放到JS队列尾部

    相关常见知识点

    常见的宏任务:

    • setTimeout
    • setInterval
    • script脚本
    • I/O操作
    • UI渲染

    常见的微任务:

    • new promise.then后面的方法体
    • mutation observer

    相关文章

      网友评论

          本文标题:【浏览器】浏览器进程

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