zoukankan      html  css  js  c++  java
  • 浏览器是多进程还是单进程?

    在前端面试时,面试官经常会问:浏览器是多进程还是单进程?

    浏览器是多进程的,浏览器每一个 tab 标签都代表一个独立的进程(也不一定,因为多个空白 tab 标签会合并成一个进程),浏览器内核(浏览器渲染进程)属于浏览器多进程中的一种。

    浏览器每个进程有多个线程,主要有以下线程

    1)GUI 渲染线程:

    负责渲染页面,解析 HTML,CSS 构成 DOM 树等,当页面重绘或者由于某种操作引起回流都会调起该线程。
    和 JS 引擎线程是互斥的,当 JS 引擎线程在工作的时候,GUI 渲染线程会被挂起,GUI 更新被放入在 JS 任务队列中,等待 JS 引擎线程空闲的时候继续执行。

    2)JS 引擎线程:

    单线程工作,负责解析运行 JavaScript 脚本。
    和 GUI 渲染线程互斥,JS 运行耗时过长就会导致页面阻塞。

    3)事件触发线程:

    当事件符合触发条件被触发时,该线程会把对应的事件回调函数添加到任务队列的队尾,等待 JS 引擎处理。

    4)定时器触发线程:

    浏览器定时计数器并不是由 JS 引擎计数的,阻塞会导致计时不准确。
    开启定时器触发线程来计时并触发计时,计时完成后会被添加到任务队列中,等待 JS 引擎处理。

    5)http 请求线程:

    http 请求的时候会开启一条请求线程。
    请求完成有结果了之后,将请求的回调函数添加到任务队列中,等待 JS 引擎处理。

    更多前端面试题库:https://www.kancloud.cn/lsmsky/web_quiz

  • 相关阅读:
    巩固复习(对以前的随笔总结)_01
    Django 项目分析后得到的某些结论
    django 命令行命令
    实现搜索视频到播放(非原创)
    python 打包
    随笔汇总,温故知新
    找伙伴
    sam-Toy Cars
    反质数
    Blue Mary的战役地图
  • 原文地址:https://www.cnblogs.com/lsmsky/p/12733450.html
Copyright © 2011-2022 走看看